// Generated by scripts/generate-runtime-contract.mjs. DO NOT EDIT.
#pragma once

#include <array>
#include <cstdint>
#include <string_view>

namespace Helix::RuntimeContract {

inline constexpr std::uint32_t ContractVersion = 1;
inline constexpr std::uint32_t ProtocolVersion = 2;
inline constexpr std::uint32_t MultiplayerContractVersion = 34;
inline constexpr std::string_view CanonicalPackage = "@hypersoniclabs/helix-sdk";
inline constexpr std::string_view CanonicalPackageVersion = "0.1.10";
inline constexpr std::string_view SourceCommit = "1fd29444a3f3635d4ccb5e1feaa6b805281879f4";
inline constexpr std::string_view ContractDigest = "sha256:774e64f70ee1c9a6438e5403ed518fb1c991a29eacd2c5a66ccabe75c01b6728";

enum class Availability { Available, Conditional, CorrectionRequired, Unavailable };

struct Method final { std::string_view Name, Signature, Input, Output; Availability State; std::string_view ProfilePoliciesJson, RuntimeBindingsJson, ErrorsJson, Idempotency, Receipt, Correction; };
struct Event final { std::string_view Name, Payload, Owner; };
struct Factory final { std::string_view Name, Signature, Input, Output, Scope; };
struct PublicExport final { std::string_view Name, Kind, Category, DeclarationsJson; };

inline constexpr std::string_view AchievementsList = "achievements.list";
inline constexpr std::string_view AchievementsMine = "achievements.mine";
inline constexpr std::string_view AnalyticsTrack = "analytics.track";
inline constexpr std::string_view AuthGetUser = "auth.getUser";
inline constexpr std::string_view AuthIsAuthenticated = "auth.isAuthenticated";
inline constexpr std::string_view AuthOnAuthChanged = "auth.onAuthChanged";
inline constexpr std::string_view AuthRequestLogin = "auth.requestLogin";
inline constexpr std::string_view AvatarGetEquipped = "avatar.getEquipped";
inline constexpr std::string_view AvatarGetEquippedForUser = "avatar.getEquippedForUser";
inline constexpr std::string_view AvatarGetLoadout = "avatar.getLoadout";
inline constexpr std::string_view AvatarOnAvatarChanged = "avatar.onAvatarChanged";
inline constexpr std::string_view AvatarOpenCreator = "avatar.openCreator";
inline constexpr std::string_view AvatarUpdateLoadout = "avatar.updateLoadout";
inline constexpr std::string_view CameraAvailable = "camera.available";
inline constexpr std::string_view CameraCapabilities = "camera.capabilities";
inline constexpr std::string_view CameraCapture = "camera.capture";
inline constexpr std::string_view CameraControl = "camera.control";
inline constexpr std::string_view CameraFlyDrone = "camera.flyDrone";
inline constexpr std::string_view CameraGetState = "camera.getState";
inline constexpr std::string_view CameraOnStateChanged = "camera.onStateChanged";
inline constexpr std::string_view CameraReportCapability = "camera.reportCapability";
inline constexpr std::string_view CameraSavePhoto = "camera.savePhoto";
inline constexpr std::string_view CustomizerGetContext = "customizer.getContext";
inline constexpr std::string_view DataStoreDelete = "dataStore.delete";
inline constexpr std::string_view DataStoreGet = "dataStore.get";
inline constexpr std::string_view DataStoreGetEntry = "dataStore.getEntry";
inline constexpr std::string_view DataStoreList = "dataStore.list";
inline constexpr std::string_view DataStoreSet = "dataStore.set";
inline constexpr std::string_view DebugEnabled = "debug.enabled";
inline constexpr std::string_view DebugLog = "debug.log";
inline constexpr std::string_view DebugOnLog = "debug.onLog";
inline constexpr std::string_view DebugRecent = "debug.recent";
inline constexpr std::string_view DeviceOpenPhone = "device.openPhone";
inline constexpr std::string_view DeviceOpenTablet = "device.openTablet";
inline constexpr std::string_view EmotesGetEquipped = "emotes.getEquipped";
inline constexpr std::string_view InventoryEquipItem = "inventory.equipItem";
inline constexpr std::string_view InventoryGetMyItems = "inventory.getMyItems";
inline constexpr std::string_view InventoryGetQuantity = "inventory.getQuantity";
inline constexpr std::string_view InventoryHasItem = "inventory.hasItem";
inline constexpr std::string_view InventoryOnInventoryChanged = "inventory.onInventoryChanged";
inline constexpr std::string_view LeaderboardSubmit = "leaderboard.submit";
inline constexpr std::string_view LeaderboardTop = "leaderboard.top";
inline constexpr std::string_view ListenClose = "listen.close";
inline constexpr std::string_view ListenConsume = "listen.consume";
inline constexpr std::string_view ListenHeartbeat = "listen.heartbeat";
inline constexpr std::string_view ListenRelease = "listen.release";
inline constexpr std::string_view LocomotionGetEquipped = "locomotion.getEquipped";
inline constexpr std::string_view MarketplaceGetListings = "marketplace.getListings";
inline constexpr std::string_view MarketplaceGetPurchase = "marketplace.getPurchase";
inline constexpr std::string_view MarketplaceGetPurchaseContext = "marketplace.getPurchaseContext";
inline constexpr std::string_view MarketplacePurchaseDistribution = "marketplace.purchaseDistribution";
inline constexpr std::string_view MarketplacePurchaseDistributionKey = "marketplace.purchaseDistributionKey";
inline constexpr std::string_view MarketplacePurchaseListing = "marketplace.purchaseListing";
inline constexpr std::string_view MarketplacePurchaseProduct = "marketplace.purchaseProduct";
inline constexpr std::string_view MatchmakingCancel = "matchmaking.cancel";
inline constexpr std::string_view MatchmakingEnqueue = "matchmaking.enqueue";
inline constexpr std::string_view MatchmakingOnMatch = "matchmaking.onMatch";
inline constexpr std::string_view MatchmakingOnStatus = "matchmaking.onStatus";
inline constexpr std::string_view MatchmakingStatus = "matchmaking.status";
inline constexpr std::string_view MaterialsClearCache = "materials.clearCache";
inline constexpr std::string_view MaterialsFromCatalog = "materials.fromCatalog";
inline constexpr std::string_view MaterialsLoad = "materials.load";
inline constexpr std::string_view MultiplayerConfigure = "multiplayer.configure";
inline constexpr std::string_view MultiplayerCurrentRoomId = "multiplayer.currentRoomId";
inline constexpr std::string_view MultiplayerJoinRoom = "multiplayer.joinRoom";
inline constexpr std::string_view MultiplayerLeave = "multiplayer.leave";
inline constexpr std::string_view MultiplayerSwitchRoom = "multiplayer.switchRoom";
inline constexpr std::string_view NotifyFailure = "notify.failure";
inline constexpr std::string_view NotifyMessage = "notify.message";
inline constexpr std::string_view NotifyNotification = "notify.notification";
inline constexpr std::string_view NotifyShow = "notify.show";
inline constexpr std::string_view NotifySuccess = "notify.success";
inline constexpr std::string_view PartyAccept = "party.accept";
inline constexpr std::string_view PartyCreateCode = "party.createCode";
inline constexpr std::string_view PartyDecline = "party.decline";
inline constexpr std::string_view PartyGet = "party.get";
inline constexpr std::string_view PartyInvite = "party.invite";
inline constexpr std::string_view PartyJoin = "party.join";
inline constexpr std::string_view PartyKick = "party.kick";
inline constexpr std::string_view PartyLeave = "party.leave";
inline constexpr std::string_view PartyOnChange = "party.onChange";
inline constexpr std::string_view PartyOnError = "party.onError";
inline constexpr std::string_view PartyOnInvite = "party.onInvite";
inline constexpr std::string_view PartyPromote = "party.promote";
inline constexpr std::string_view PartyRevokeCode = "party.revokeCode";
inline constexpr std::string_view PresenceClearActivity = "presence.clearActivity";
inline constexpr std::string_view PresenceSetActivity = "presence.setActivity";
inline constexpr std::string_view PromptsClear = "prompts.clear";
inline constexpr std::string_view PromptsSet = "prompts.set";
inline constexpr std::string_view PurchasesConsume = "purchases.consume";
inline constexpr std::string_view PurchasesGetEntitlements = "purchases.getEntitlements";
inline constexpr std::string_view PurchasesGetPurchase = "purchases.getPurchase";
inline constexpr std::string_view PurchasesOnEntitlementsChanged = "purchases.onEntitlementsChanged";
inline constexpr std::string_view RootGetSessionToken = "root.getSessionToken";
inline constexpr std::string_view RootHasLeft = "root.hasLeft";
inline constexpr std::string_view RootInit = "root.init";
inline constexpr std::string_view RootOnLeave = "root.onLeave";
inline constexpr std::string_view VoiceApplySettings = "voice.applySettings";
inline constexpr std::string_view VoiceChannel = "voice.channel";
inline constexpr std::string_view VoiceChannelOf = "voice.channelOf";
inline constexpr std::string_view VoiceGetMicMode = "voice.getMicMode";
inline constexpr std::string_view VoiceJoin = "voice.join";
inline constexpr std::string_view VoiceLeave = "voice.leave";
inline constexpr std::string_view VoiceMutedUserIds = "voice.mutedUserIds";
inline constexpr std::string_view VoiceOnParticipantsChanged = "voice.onParticipantsChanged";
inline constexpr std::string_view VoiceOnSpeakingChanged = "voice.onSpeakingChanged";
inline constexpr std::string_view VoiceParticipantIds = "voice.participantIds";
inline constexpr std::string_view VoiceSetChannel = "voice.setChannel";
inline constexpr std::string_view VoiceSetDevice = "voice.setDevice";
inline constexpr std::string_view VoiceSetListenerPose = "voice.setListenerPose";
inline constexpr std::string_view VoiceSetMicMode = "voice.setMicMode";
inline constexpr std::string_view VoiceSetMicVolume = "voice.setMicVolume";
inline constexpr std::string_view VoiceSetOutputVolume = "voice.setOutputVolume";
inline constexpr std::string_view VoiceSetParticipantPosition = "voice.setParticipantPosition";
inline constexpr std::string_view VoiceSetParticipantVolume = "voice.setParticipantVolume";
inline constexpr std::string_view VoiceSetPlayerMuted = "voice.setPlayerMuted";
inline constexpr std::string_view VoiceSetPttDown = "voice.setPttDown";
inline constexpr std::string_view VoiceStartAudio = "voice.startAudio";
inline constexpr std::string_view WalletGetBalance = "wallet.getBalance";
inline constexpr std::string_view WalletOnBalanceChanged = "wallet.onBalanceChanged";

inline constexpr std::array<Method, 120> Methods = {{
  { "achievements.list", "() => Promise<AchievementListResult>", "", "Promise<AchievementListResult>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"player_access_or_public_view\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"player_access_or_public_view\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"player_access_or_public_view\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "achievements.mine", "() => Promise<AchievementMineResult>", "", "Promise<AchievementMineResult>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "analytics.track", "(eventName: AnalyticsEventName, input?: AnalyticsTrackInput) => Promise<void>", "eventName: AnalyticsEventName, input?: AnalyticsTrackInput", "Promise<void>", Availability::CorrectionRequired, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"correction_required\",\n    \"correction\": \"runtime_platform_must_not_be_hardcoded_web\",\n    \"credentials\": [\n      \"world_session_or_anonymous\"\n    ],\n    \"idempotency\": \"event_id\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"correction_required\",\n    \"correction\": \"runtime_platform_must_not_be_hardcoded_web\",\n    \"credentials\": [\n      \"world_session_or_anonymous\"\n    ],\n    \"idempotency\": \"event_id\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"runtime_platform_must_not_be_hardcoded_web\"\n  },\n  \"web\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"runtime_platform_must_not_be_hardcoded_web\"\n  }\n}", "[\n  \"CORRECTION_REQUIRED\"\n]", "event_id", "", "runtime_platform_must_not_be_hardcoded_web" },
  { "auth.getUser", "() => Promise<HelixUser | null>", "", "Promise<HelixUser | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"auth.profile\"\n    ],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"auth.profile\"\n    ],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"auth.profile\"\n    ],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "auth.isAuthenticated", "() => boolean", "", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "auth.onAuthChanged", "(listener: AuthListener) => (() => void)", "listener: AuthListener) => ((", "void)", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "auth.requestLogin", "() => Promise<HelixUser>", "", "Promise<HelixUser>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "avatar.getEquipped", "() => Promise<EquippedAvatar | null>", "", "Promise<EquippedAvatar | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_user_identity\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_user_identity\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  },\n  \"preview\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_user_identity\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "avatar.getEquippedForUser", "(userId: string) => Promise<EquippedAvatar | null>", "userId: string", "Promise<EquippedAvatar | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_user_identity\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_user_identity\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  },\n  \"preview\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_user_identity\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "avatar.getLoadout", "() => Promise<AvatarLoadout | null>", "", "Promise<AvatarLoadout | null>", Availability::Conditional, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"conditional\",\n    \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"conditional\",\n    \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"shell_only_until_runtime_token_is_accepted\"\n  },\n  \"web\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"shell_only_until_runtime_token_is_accepted\"\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "shell_only_until_runtime_token_is_accepted" },
  { "avatar.onAvatarChanged", "(cb: () => void) => (() => void)", "cb: () => void) => ((", "void)", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "avatar.openCreator", "() => Promise<boolean>", "", "Promise<boolean>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "avatar.updateLoadout", "(patch: AvatarLoadoutPatch) => Promise<AvatarLoadout | null>", "patch: AvatarLoadoutPatch", "Promise<AvatarLoadout | null>", Availability::Conditional, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"conditional\",\n    \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"optimistic_server_update\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"conditional\",\n    \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"optimistic_server_update\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"shell_only_until_runtime_token_is_accepted\"\n  },\n  \"web\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"shell_only_until_runtime_token_is_accepted\"\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "optimistic_server_update", "", "shell_only_until_runtime_token_is_accepted" },
  { "camera.available", "() => boolean", "", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "camera.capabilities", "() => HelixCameraCapability", "", "HelixCameraCapability", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "camera.capture", "(canvas: HTMLCanvasElement, opts?: CaptureOptions) => Promise<Blob>", "canvas: HTMLCanvasElement, opts?: CaptureOptions", "Promise<Blob>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "camera.control", "(control: HelixCameraControl) => Promise<HelixCameraState>", "control: HelixCameraControl", "Promise<HelixCameraState>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"camera.control\"\n    ],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"camera.control\"\n    ],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CORRECTION_REQUIRED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"RUNTIME_CAPABILITY_UNAVAILABLE\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "camera.flyDrone", "(command: HelixCameraDroneCommand) => Promise<HelixCameraDroneState>", "command: HelixCameraDroneCommand", "Promise<HelixCameraDroneState>", Availability::Unavailable, "{\n  \"client\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"unavailable\",\n    \"correction\": \"drone_flight_authority_contract_required\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"camera.control\"\n    ],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"unavailable\",\n    \"correction\": \"drone_flight_authority_contract_required\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"camera.control\"\n    ],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"unavailable\",\n    \"bindable\": false,\n    \"correction\": \"drone_flight_authority_contract_required\"\n  },\n  \"web\": {\n    \"availability\": \"unavailable\",\n    \"bindable\": false,\n    \"correction\": \"drone_flight_authority_contract_required\"\n  }\n}", "[\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "drone_flight_authority_contract_required" },
  { "camera.getState", "() => HelixCameraState", "", "HelixCameraState", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "camera.onStateChanged", "(cb: (state: HelixCameraState) => void) => (() => void)", "cb: (state: HelixCameraState) => void) => ((", "void)", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "camera.reportCapability", "(capability: HelixCameraCapability) => boolean", "capability: HelixCameraCapability", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\"\n]", "replace_current", "", "" },
  { "camera.savePhoto", "(image: Blob | ArrayBuffer | Uint8Array, meta?: { caption?: string; aspect?: CameraAspect; contentType?: string; }) => Promise<SavedPhoto | null>", "image: Blob | ArrayBuffer | Uint8Array, meta?: { caption?: string; aspect?: CameraAspect; contentType?: string; }", "Promise<SavedPhoto | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"camera.capture\"\n    ],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"camera.capture\"\n    ],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "server_defined", "", "" },
  { "customizer.getContext", "() => PackageCustomizerContext", "", "PackageCustomizerContext", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session_or_preview\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session_or_preview\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session_or_preview\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "dataStore.delete", "(key: string, options?: DataStoreWriteOptions) => Promise<void>", "key: string, options?: DataStoreWriteOptions", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"optimistic_version\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"optimistic_version\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"managed_server\": {\n    \"authority\": \"world_server\",\n    \"availability\": \"unavailable\",\n    \"correction\": \"planned_managed_server_route_not_shipped\",\n    \"credentials\": [\n      \"managed_workload_credential\"\n    ],\n    \"idempotency\": \"optimistic_version\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "optimistic_version", "", "" },
  { "dataStore.get", "<T = unknown>(key: string) => Promise<T | null>", "key: string", "Promise<T | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"managed_server\": {\n    \"authority\": \"world_server\",\n    \"availability\": \"unavailable\",\n    \"correction\": \"planned_managed_server_route_not_shipped\",\n    \"credentials\": [\n      \"managed_workload_credential\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "dataStore.getEntry", "<T = unknown>(key: string) => Promise<{ value: T; version: number; } | null>", "key: string", "Promise<{ value: T; version: number; } | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"managed_server\": {\n    \"authority\": \"world_server\",\n    \"availability\": \"unavailable\",\n    \"correction\": \"planned_managed_server_route_not_shipped\",\n    \"credentials\": [\n      \"managed_workload_credential\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "dataStore.list", "(prefix?: string, opts?: DataStoreListOptions) => Promise<DataStoreListPage>", "prefix?: string, opts?: DataStoreListOptions", "Promise<DataStoreListPage>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"managed_server\": {\n    \"authority\": \"world_server\",\n    \"availability\": \"unavailable\",\n    \"correction\": \"planned_managed_server_route_not_shipped\",\n    \"credentials\": [\n      \"managed_workload_credential\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "dataStore.set", "<T = unknown>(key: string, value: T, options?: DataStoreWriteOptions) => Promise<void>", "key: string, value: T, options?: DataStoreWriteOptions", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"optimistic_version\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"optimistic_version\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"managed_server\": {\n    \"authority\": \"world_server\",\n    \"availability\": \"unavailable\",\n    \"correction\": \"planned_managed_server_route_not_shipped\",\n    \"credentials\": [\n      \"managed_workload_credential\"\n    ],\n    \"idempotency\": \"optimistic_version\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "optimistic_version", "", "" },
  { "debug.enabled", "() => boolean", "", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"managed_server\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "debug.log", "(...args: unknown[]) => void", "...args: unknown[]", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"managed_server\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "debug.onLog", "(cb: (entry: DebugLogEntry) => void) => (() => void)", "cb: (entry: DebugLogEntry) => void) => ((", "void)", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"managed_server\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "debug.recent", "() => DebugLogEntry[]", "", "DebugLogEntry[]", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"managed_server\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "device.openPhone", "() => boolean", "", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "device.openTablet", "() => boolean", "", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "emotes.getEquipped", "() => Promise<EquippedEmotes | null>", "", "Promise<EquippedEmotes | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_user_identity\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_user_identity\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  },\n  \"preview\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_user_identity\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "inventory.equipItem", "(itemId: string) => Promise<void>", "itemId: string", "Promise<void>", Availability::Unavailable, "{}", "{\n  \"unreal\": {\n    \"availability\": \"unavailable\",\n    \"bindable\": false,\n    \"correction\": \"inventory_instance_equip_contract_required\"\n  },\n  \"web\": {\n    \"availability\": \"unavailable\",\n    \"bindable\": false,\n    \"correction\": \"inventory_instance_equip_contract_required\"\n  }\n}", "[\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "inventory_instance_equip_contract_required" },
  { "inventory.getMyItems", "() => Promise<InventoryItem[]>", "", "Promise<InventoryItem[]>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "inventory.getQuantity", "(itemId: string) => Promise<number>", "itemId: string", "Promise<number>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "inventory.hasItem", "(itemId: string) => Promise<boolean>", "itemId: string", "Promise<boolean>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "inventory.onInventoryChanged", "(cb: () => void) => (() => void)", "cb: () => void) => ((", "void)", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "leaderboard.submit", "(board: string, score: number, options?: LeaderboardSubmitOptions) => Promise<LeaderboardSubmitResult>", "board: string, score: number, options?: LeaderboardSubmitOptions", "Promise<LeaderboardSubmitResult>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"managed_server\": {\n    \"authority\": \"world_server\",\n    \"availability\": \"unavailable\",\n    \"correction\": \"planned_managed_server_route_not_shipped\",\n    \"credentials\": [\n      \"managed_workload_credential\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "server_defined", "", "" },
  { "leaderboard.top", "(board: string, options?: LeaderboardTopOptions) => Promise<LeaderboardPage>", "board: string, options?: LeaderboardTopOptions", "Promise<LeaderboardPage>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"managed_server\": {\n    \"authority\": \"world_server\",\n    \"availability\": \"unavailable\",\n    \"correction\": \"planned_managed_server_route_not_shipped\",\n    \"credentials\": [\n      \"managed_workload_credential\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "listen.close", "(sessionId: string) => Promise<ListenCloseResult>", "sessionId: string", "Promise<ListenCloseResult>", Availability::Available, "{\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"unavailable\",\n    \"bindable\": false,\n    \"correction\": \"listen_host_admission_is_native_host_only\"\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "listen.consume", "(sessionId: string, listenJoinToken: string, connectionId: string) => Promise<ListenAdmissionResult>", "sessionId: string, listenJoinToken: string, connectionId: string", "Promise<ListenAdmissionResult>", Availability::Available, "{\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"sdk_minted_operation_id\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"unavailable\",\n    \"bindable\": false,\n    \"correction\": \"listen_host_admission_is_native_host_only\"\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "sdk_minted_operation_id", "", "" },
  { "listen.heartbeat", "(sessionId: string) => Promise<ListenHeartbeatResult>", "sessionId: string", "Promise<ListenHeartbeatResult>", Availability::Available, "{\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"unavailable\",\n    \"bindable\": false,\n    \"correction\": \"listen_host_admission_is_native_host_only\"\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "listen.release", "(sessionId: string, seatId: string, connectionId: string) => Promise<ListenReleaseResult>", "sessionId: string, seatId: string, connectionId: string", "Promise<ListenReleaseResult>", Availability::Available, "{\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"sdk_minted_operation_id\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"unavailable\",\n    \"bindable\": false,\n    \"correction\": \"listen_host_admission_is_native_host_only\"\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "sdk_minted_operation_id", "", "" },
  { "locomotion.getEquipped", "() => Promise<EquippedLocomotionPack | null>", "", "Promise<EquippedLocomotionPack | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "marketplace.getListings", "(query?: MarketplaceQuery) => Promise<MarketplaceListing[]>", "query?: MarketplaceQuery", "Promise<MarketplaceListing[]>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_or_player_access\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_or_player_access\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"public_or_player_access\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "marketplace.getPurchase", "(idempotencyKey: string, ref?: string) => Promise<PurchaseResult | null>", "idempotencyKey: string, ref?: string", "Promise<PurchaseResult | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"lookup_by_original_key\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"lookup_by_original_key\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "lookup_by_original_key", "", "" },
  { "marketplace.getPurchaseContext", "(ref: string, options?: PurchaseOptions | number) => Promise<PurchaseContext | null>", "ref: string, options?: PurchaseOptions | number", "Promise<PurchaseContext | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "marketplace.purchaseDistribution", "(distributionId: string, options?: PurchaseOptions | number) => Promise<PurchaseResult>", "distributionId: string, options?: PurchaseOptions | number", "Promise<PurchaseResult>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"required_or_sdk_managed\",\n    \"receipt\": \"helix-purchase-receipt\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"required_or_sdk_managed\",\n    \"receipt\": \"helix-purchase-receipt\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "required_or_sdk_managed", "helix-purchase-receipt", "" },
  { "marketplace.purchaseDistributionKey", "(key: string, options?: PurchaseOptions | number) => Promise<PurchaseResult>", "key: string, options?: PurchaseOptions | number", "Promise<PurchaseResult>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"required_or_sdk_managed\",\n    \"receipt\": \"helix-purchase-receipt\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"required_or_sdk_managed\",\n    \"receipt\": \"helix-purchase-receipt\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "required_or_sdk_managed", "helix-purchase-receipt", "" },
  { "marketplace.purchaseListing", "(listingId: string, options?: PurchaseOptions) => Promise<PurchaseResult>", "listingId: string, options?: PurchaseOptions", "Promise<PurchaseResult>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"required_or_sdk_managed\",\n    \"receipt\": \"helix-purchase-receipt\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"required_or_sdk_managed\",\n    \"receipt\": \"helix-purchase-receipt\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "required_or_sdk_managed", "helix-purchase-receipt", "" },
  { "marketplace.purchaseProduct", "(productKey: string, options?: PurchaseOptions | number) => Promise<PurchaseResult>", "productKey: string, options?: PurchaseOptions | number", "Promise<PurchaseResult>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"required_or_sdk_managed\",\n    \"receipt\": \"helix-purchase-receipt\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"required_or_sdk_managed\",\n    \"receipt\": \"helix-purchase-receipt\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "required_or_sdk_managed", "helix-purchase-receipt", "" },
  { "matchmaking.cancel", "() => Promise<void>", "", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "delete_current", "", "" },
  { "matchmaking.enqueue", "(queueId: string) => Promise<QueueStatus>", "queueId: string", "Promise<QueueStatus>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "server_defined", "", "" },
  { "matchmaking.onMatch", "(cb: (match: MatchFound) => void) => () => void", "cb: (match: MatchFound) => void) => (", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "matchmaking.onStatus", "(cb: (status: QueueStatus) => void) => () => void", "cb: (status: QueueStatus) => void) => (", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "matchmaking.status", "() => Promise<QueueStatus>", "", "Promise<QueueStatus>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "materials.clearCache", "() => void", "", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "materials.fromCatalog", "(assetBaseUrl: string, catalog: HelixMaterialCatalog) => HelixMaterialLibrary", "assetBaseUrl: string, catalog: HelixMaterialCatalog", "HelixMaterialLibrary", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "materials.load", "(assetBaseUrl: string) => Promise<HelixMaterialLibrary>", "assetBaseUrl: string", "Promise<HelixMaterialLibrary>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"cache_by_url\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"cache_by_url\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"cache_by_url\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "cache_by_url", "", "" },
  { "multiplayer.configure", "(options: { apiBaseUrl: string; }) => void", "options: { apiBaseUrl: string; }", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"replace_configuration\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"replace_configuration\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"replace_configuration\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_configuration", "", "" },
  { "multiplayer.currentRoomId", "() => string | null", "", "string | null", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "multiplayer.joinRoom", "(worldId?: string, options?: JoinRoomOptions) => Promise<HelixRoom>", "worldId?: string, options?: JoinRoomOptions", "Promise<HelixRoom>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session_then_room_credential\"\n    ],\n    \"idempotency\": \"reservation_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session_then_room_credential\"\n    ],\n    \"idempotency\": \"reservation_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "reservation_defined", "", "" },
  { "multiplayer.leave", "() => Promise<void>", "", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "multiplayer.switchRoom", "(target: SwitchRoomTarget, options?: SwitchRoomOptions) => Promise<HelixRoom>", "target: SwitchRoomTarget, options?: SwitchRoomOptions", "Promise<HelixRoom>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session_then_room_credential\"\n    ],\n    \"idempotency\": \"reservation_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session_then_room_credential\"\n    ],\n    \"idempotency\": \"reservation_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"network_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"room_hop_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\"\n]", "reservation_defined", "", "" },
  { "notify.failure", "(title: string, message?: string) => boolean", "title: string, message?: string", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "notify.message", "(title: string, message?: string) => boolean", "title: string, message?: string", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "notify.notification", "(title: string, message?: string) => boolean", "title: string, message?: string", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "notify.show", "(notification: HelixNotification) => boolean", "notification: HelixNotification", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "notify.success", "(title: string, message?: string) => boolean", "title: string, message?: string", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "party.accept", "(inviteId: string) => Promise<Party>", "inviteId: string", "Promise<Party>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "server_defined", "", "" },
  { "party.createCode", "() => Promise<PartyCode>", "", "Promise<PartyCode>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "party.decline", "(inviteId: string) => Promise<void>", "inviteId: string", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "delete_current", "", "" },
  { "party.get", "() => Promise<PartyState>", "", "Promise<PartyState>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "party.invite", "(userId: string) => Promise<PartyInviteReceipt>", "userId: string", "Promise<PartyInviteReceipt>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "server_defined", "", "" },
  { "party.join", "(code: string) => Promise<Party>", "code: string", "Promise<Party>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"server_defined\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "server_defined", "", "" },
  { "party.kick", "(userId: string) => Promise<void>", "userId: string", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "delete_current", "", "" },
  { "party.leave", "() => Promise<void>", "", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "delete_current", "", "" },
  { "party.onChange", "(cb: (state: PartyState) => void) => () => void", "cb: (state: PartyState) => void) => (", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "party.onError", "(cb: (error: HelixPartyError) => void) => () => void", "cb: (error: HelixPartyError) => void) => (", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "party.onInvite", "(cb: (invite: PartyInvite) => void) => () => void", "cb: (invite: PartyInvite) => void) => (", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "party.promote", "(userId: string) => Promise<Party>", "userId: string", "Promise<Party>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "party.revokeCode", "() => Promise<void>", "", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"delete_current\",\n    \"requiredCapabilities\": [\n      \"multiplayer\"\n    ],\n    \"transportOwner\": \"direct\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"party_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"BACKEND_UNAVAILABLE\",\n  \"CAPABILITY_DENIED\",\n  \"CONFLICT\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"UNAVAILABLE\"\n]", "delete_current", "", "" },
  { "presence.clearActivity", "() => Promise<boolean>", "", "Promise<boolean>", Availability::CorrectionRequired, "{}", "{\n  \"unreal\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"runtime_scoped_presence_authority_required\"\n  },\n  \"web\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"runtime_scoped_presence_authority_required\"\n  }\n}", "[\n  \"CORRECTION_REQUIRED\"\n]", "delete_current", "", "runtime_scoped_presence_authority_required" },
  { "presence.setActivity", "(activity: HelixPresenceActivity) => Promise<boolean>", "activity: HelixPresenceActivity", "Promise<boolean>", Availability::CorrectionRequired, "{}", "{\n  \"unreal\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"runtime_scoped_presence_authority_required\"\n  },\n  \"web\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"runtime_scoped_presence_authority_required\"\n  }\n}", "[\n  \"CORRECTION_REQUIRED\"\n]", "replace_current", "", "runtime_scoped_presence_authority_required" },
  { "prompts.clear", "(promptId?: string) => boolean", "promptId?: string", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"delete_by_prompt_id_or_all\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"delete_by_prompt_id_or_all\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"delete_by_prompt_id_or_all\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "delete_by_prompt_id_or_all", "", "" },
  { "prompts.set", "(prompt: HelixInteractionPrompt) => boolean", "prompt: HelixInteractionPrompt", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_by_prompt_id\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_by_prompt_id\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_by_prompt_id\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_by_prompt_id", "", "" },
  { "purchases.consume", "(code: string, amount: number) => Promise<ConsumeResult>", "code: string, amount: number", "Promise<ConsumeResult>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"sdk_minted_operation_id\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"sdk_minted_operation_id\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "sdk_minted_operation_id", "", "" },
  { "purchases.getEntitlements", "() => Promise<Entitlements>", "", "Promise<Entitlements>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "purchases.getPurchase", "(idempotencyKey: string, ref?: string) => Promise<PurchaseResult | null>", "idempotencyKey: string, ref?: string", "Promise<PurchaseResult | null>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"lookup_by_original_key\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"lookup_by_original_key\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "lookup_by_original_key", "", "" },
  { "purchases.onEntitlementsChanged", "(cb: () => void) => (() => void)", "cb: () => void) => ((", "void)", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "root.getSessionToken", "() => string | null", "", "string | null", Availability::CorrectionRequired, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"conditional\",\n    \"correction\": \"web_only_raw_world_session_token\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"conditional\",\n    \"correction\": \"web_only_raw_world_session_token\",\n    \"credentials\": [\n      \"world_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"raw_session_token_must_not_be_unreal_bindable\"\n  },\n  \"web\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"web_only_raw_world_session_token\"\n  }\n}", "[\n  \"CORRECTION_REQUIRED\"\n]", "not_applicable", "", "web_world_session_is_not_an_unreal_runtime_credential" },
  { "root.hasLeft", "() => boolean", "", "boolean", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"world_leave_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "root.init", "() => Promise<HelixInitResult>", "", "Promise<HelixInitResult>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session_or_preview\"\n    ],\n    \"idempotency\": \"one_initialization_per_runtime\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session_or_preview\"\n    ],\n    \"idempotency\": \"one_initialization_per_runtime\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"shell_player\",\n    \"availability\": \"available\",\n    \"credentials\": [\n      \"shell_player_session_or_preview\"\n    ],\n    \"idempotency\": \"one_initialization_per_runtime\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "one_initialization_per_runtime", "", "" },
  { "root.onLeave", "(cb: () => void) => () => void", "cb: () => void) => (", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"conditional\",\n    \"bindable\": true,\n    \"correction\": \"world_leave_requires_runtime_capability_discovery\"\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "voice.applySettings", "(settings: HelixVoiceSettings) => Promise<void>", "settings: HelixVoiceSettings", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "voice.channel", "() => string | null", "", "string | null", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "voice.channelOf", "(userId: string) => string | null", "userId: string", "string | null", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "voice.getMicMode", "() => HelixVoiceMicMode", "", "HelixVoiceMicMode", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "voice.join", "(options?: JoinVoiceOptions) => Promise<boolean>", "options?: JoinVoiceOptions", "Promise<boolean>", Availability::CorrectionRequired, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"correction_required\",\n    \"correction\": \"shell_owned_cross_runtime_voice_contract_required\",\n    \"credentials\": [\n      \"world_session_or_instance_assignment\"\n    ],\n    \"idempotency\": \"one_connection_per_client\",\n    \"requiredCapabilities\": [\n      \"voice.room\"\n    ],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"correction_required\",\n    \"correction\": \"shell_owned_cross_runtime_voice_contract_required\",\n    \"credentials\": [\n      \"world_session_or_instance_assignment\"\n    ],\n    \"idempotency\": \"one_connection_per_client\",\n    \"requiredCapabilities\": [\n      \"voice.room\"\n    ],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"shell_owned_cross_runtime_voice_contract_required\"\n  },\n  \"web\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"shell_owned_cross_runtime_voice_contract_required\"\n  }\n}", "[\n  \"CORRECTION_REQUIRED\"\n]", "one_connection_per_client", "", "shell_owned_cross_runtime_voice_contract_required" },
  { "voice.leave", "() => Promise<void>", "", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "voice.mutedUserIds", "() => string[]", "", "string[]", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "voice.onParticipantsChanged", "(cb: (userIds: string[]) => void) => () => void", "cb: (userIds: string[]) => void) => (", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "voice.onSpeakingChanged", "(cb: (userIds: string[]) => void) => () => void", "cb: (userIds: string[]) => void) => (", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "voice.participantIds", "() => string[]", "", "string[]", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"local\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"INVALID_ARGUMENT\"\n]", "not_applicable", "", "" },
  { "voice.setChannel", "(channelId: string | null) => Promise<void>", "channelId: string | null", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"voice.room\"\n    ],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"voice.room\"\n    ],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "voice.setDevice", "(deviceId: string, label?: string) => Promise<void>", "deviceId: string, label?: string", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "voice.setListenerPose", "(position: HelixVoiceVec3, forward: HelixVoiceVec3, up?: HelixVoiceVec3) => void", "position: HelixVoiceVec3, forward: HelixVoiceVec3, up?: HelixVoiceVec3", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"voice.proximity\"\n    ],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [\n      \"voice.proximity\"\n    ],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "voice.setMicMode", "(mode: HelixVoiceMicMode) => Promise<void>", "mode: HelixVoiceMicMode", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "voice.setMicVolume", "(volume: number) => void", "volume: number", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "voice.setOutputVolume", "(volume: number) => void", "volume: number", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "voice.setParticipantPosition", "(userId: string, position: HelixVoiceVec3 | null) => void", "userId: string, position: HelixVoiceVec3 | null", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_by_participant\",\n    \"requiredCapabilities\": [\n      \"voice.proximity\"\n    ],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_by_participant\",\n    \"requiredCapabilities\": [\n      \"voice.proximity\"\n    ],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_by_participant", "", "" },
  { "voice.setParticipantVolume", "(userId: string, volume: number) => void", "userId: string, volume: number", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_by_participant\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_by_participant\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_by_participant", "", "" },
  { "voice.setPlayerMuted", "(userId: string, muted: boolean) => void", "userId: string, muted: boolean", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_by_user\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_by_user\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_by_user", "", "" },
  { "voice.setPttDown", "(down: boolean) => void", "down: boolean", "void", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"replace_current\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "replace_current", "", "" },
  { "voice.startAudio", "() => Promise<void>", "", "Promise<void>", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"voice_provider\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
  { "wallet.getBalance", "() => Promise<Balance>", "", "Promise<Balance>", Availability::CorrectionRequired, "{\n  \"client\": {\n    \"authority\": \"platform\",\n    \"availability\": \"correction_required\",\n    \"correction\": \"consume_authoritative_spendable_balance\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"platform\",\n    \"availability\": \"correction_required\",\n    \"correction\": \"consume_authoritative_spendable_balance\",\n    \"credentials\": [\n      \"shell_player_session\"\n    ],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"consume_authoritative_spendable_balance\"\n  },\n  \"web\": {\n    \"availability\": \"correction_required\",\n    \"bindable\": false,\n    \"correction\": \"consume_authoritative_spendable_balance\"\n  }\n}", "[\n  \"CORRECTION_REQUIRED\"\n]", "not_applicable", "", "consume_authoritative_spendable_balance" },
  { "wallet.onBalanceChanged", "(cb: (b: Balance) => void) => (() => void)", "cb: (b: Balance) => void) => ((", "void)", Availability::Available, "{\n  \"client\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"listen\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  },\n  \"preview\": {\n    \"authority\": \"client\",\n    \"availability\": \"available\",\n    \"credentials\": [],\n    \"idempotency\": \"not_applicable\",\n    \"requiredCapabilities\": [],\n    \"transportOwner\": \"shell\"\n  }\n}", "{\n  \"unreal\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  },\n  \"web\": {\n    \"availability\": \"available\",\n    \"bindable\": true\n  }\n}", "[\n  \"AUTH_REQUIRED\",\n  \"CAPABILITY_DENIED\",\n  \"INVALID_ARGUMENT\",\n  \"RATE_LIMITED\",\n  \"TIMEOUT\",\n  \"BACKEND_UNAVAILABLE\"\n]", "not_applicable", "", "" },
}};
inline constexpr std::array<Event, 16> Events = {{
  { "auth-changed", "HelixUser|null", "shell" },
  { "balance-changed", "void", "shell" },
  { "inventory-changed", "void", "shell" },
  { "entitlements-changed", "void", "shell" },
  { "avatar-changed", "void", "shell" },
  { "equipment-changed", "void", "shell" },
  { "emotes-changed", "void", "shell" },
  { "overlay-open", "string", "shell" },
  { "overlay-closed", "string", "shell" },
  { "multiplayer-state", "HelixMultiplayerState|null", "network_provider" },
  { "voice-state", "HelixVoiceState", "voice_provider" },
  { "voice-level", "number", "voice_provider" },
  { "debug-log", "DebugLogEntry", "client" },
  { "camera-state", "HelixCameraState", "shell" },
  { "camera-capability", "HelixCameraCapability", "client" },
  { "world-leave", "void", "shell" },
}};
inline constexpr std::array<Factory, 8> Factories = {{
  { "captureCanvas", "(source: HTMLCanvasElement, opts?: CaptureOptions) => Promise<Blob>", "source: HTMLCanvasElement, opts?: CaptureOptions", "Promise<Blob>", "web_camera_implementation" },
  { "createDreamerAudioClient", "(options: DreamerAudioClientOptions) => DreamerAudioClient", "options: DreamerAudioClientOptions", "DreamerAudioClient", "creator_time_generation" },
  { "createMaterialLibrary", "(assetBaseUrl: string, catalog: HelixMaterialCatalog) => HelixMaterialLibrary", "assetBaseUrl: string, catalog: HelixMaterialCatalog", "HelixMaterialLibrary", "web_material_implementation" },
  { "createRoomAccessors", "(sessionId: string, state: () => AccessorRoomState | null | undefined) => RoomAccessors", "sessionId: string, state: () => AccessorRoomState | null | undefined", "RoomAccessors", "multiplayer_read_accessors" },
  { "createVarsView", "(source: () => VarsBag) => VarsView", "source: () => VarsBag", "VarsView", "multiplayer_read_accessors" },
  { "createVaultClient", "(options: VaultClientOptions) => VaultClient", "options: VaultClientOptions", "VaultClient", "creator_and_runtime_asset_delivery" },
  { "createVaultLoadPlan", "(resolved: VaultResolvedAsset) => VaultLoadPlan", "resolved: VaultResolvedAsset", "VaultLoadPlan", "runtime_specific_artifact_selection" },
  { "cropRectForAspect", "(w: number, h: number, aspect?: CameraAspect) => CropRect", "w: number, h: number, aspect?: CameraAspect", "CropRect", "camera_geometry" },
}};
inline constexpr std::array<PublicExport, 424> PublicExports = {{
  { "AbilityMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface AbilityMessage {\\n    ability: string;\\n    active: boolean;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "AccessorModuleState", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface AccessorModuleState {\\n    roomVars?: Record<string, unknown>;\\n    players?: KeyedBag<PlayerBag>;\\n    entities?: KeyedBag<EntityBag>;\\n    phase?: string;\\n    timerDeadlines?: KeyedBag<number>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-accessors.ts\"\n  }\n]" },
  { "AccessorRoomState", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface AccessorRoomState {\\n    roomVars?: Record<string, unknown>;\\n    players?: {\\n        get(id: string): PlayerBag;\\n    } | Record<string, PlayerBag>;\\n    phase?: string;\\n    modules?: Record<string, AccessorModuleState | undefined>;\\n    moduleChunks?: Record<string, Record<string, AccessorModuleState | undefined> | undefined>;\\n    dynamicModules?: KeyedBag<AccessorDynamicModuleState>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-accessors.ts\"\n  }\n]" },
  { "AccountVerificationLevel", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type AccountVerificationLevel = 'basic' | 'verified' | 'identity_verified' | 'business_verified';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "AchievementListResult", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type AchievementListResult = {\\n    achievements: AchievementSummary[];\\n    total: number;\\n    earned: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "AchievementMineResult", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type AchievementMineResult = {\\n    achievements: AchievementSummary[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "AchievementSummary", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type AchievementSummary = {\\n    id: string;\\n    key: string;\\n    name: string;\\n    description: string | null;\\n    points: number;\\n    hidden: boolean;\\n    earned: boolean;\\n    rarityTier: string;\\n    earnPct: number | null;\\n    iconUrl: string | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "ActionMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ActionMessage {\\n    finalRest?: {\\n        scope?: FinalRestProvenance;\\n        version: 1;\\n        requestId: number;\\n        group: string;\\n    };\\n    moduleId?: string;\\n    itemInstanceId?: string;\\n    bundleChecksumSha256?: string;\\n    moduleRevision?: number;\\n    engagement?: 'acquire' | 'release';\\n    engagementRequestId?: number;\\n    engagementEpoch?: number;\\n    name: string;\\n    args?: Record<string, RoomVarValue>;\\n    vehicleAction?: VehicleActionEnvelope;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ActionSurfaceAction", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ActionSurfaceAction {\\n    id: string;\\n    label: string;\\n    kind: ActionSurfaceKind;\\n    call?: string;\\n    socket?: string;\\n    enabled?: boolean;\\n    visible?: boolean;\\n    reason?: string;\\n    availability?: ActionSurfaceAvailability;\\n    value?: number | string | null;\\n    var?: string;\\n    min?: number;\\n    max?: number;\\n    step?: number;\\n    unit?: string;\\n    placeholder?: string;\\n    maxLength?: number;\\n    inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\\n    options?: readonly ActionSurfaceOption[];\\n    optionsFrom?: ActionSurfaceOptionsFrom;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ActionSurfaceAvailability", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ActionSurfaceAvailability {\\n    state: 'available' | 'busy' | 'occupied';\\n    label?: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ActionSurfaceDevice", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ActionSurfaceDevice = 'keyboard' | 'gamepad' | 'touch';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ActionSurfaceHintSource", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ActionSurfaceHintSource {\\n    activeDevice(): ActionSurfaceDevice;\\n    hint(action: Extract<StandardModeAction, 'move' | 'primary' | 'cancel'>): string;\\n    subscribe?(listener: () => void): () => void;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ActionSurfaceInvocation", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ActionSurfaceInvocation = {\\n    action: ActionSurfaceAction;\\n    kind: 'run' | 'point' | 'takeover';\\n} | {\\n    action: ActionSurfaceAction;\\n    kind: 'number';\\n    value: number;\\n} | {\\n    action: ActionSurfaceAction;\\n    kind: 'choice' | 'asset' | 'text';\\n    value: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ActionSurfaceKind", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ActionSurfaceKind = 'run' | 'choice' | 'number' | 'text' | 'point' | 'asset' | 'takeover';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ActionSurfaceModeOptions", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ActionSurfaceModeOptions {\\n    surface: UniversalActionSurface;\\n    id?: string;\\n    suppression?: Suppression;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ActionSurfaceOption", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ActionSurfaceOption {\\n    value: string;\\n    label: string;\\n    disabled?: boolean;\\n    reason?: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ActionSurfaceOptionsFrom", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ActionSurfaceOptionsFrom {\\n    query?: {\\n        has: string;\\n        scope?: 'room' | 'world';\\n    };\\n    inventory?: {\\n        accepts: string;\\n    };\\n    var?: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ActionSurfaceSnapshot", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ActionSurfaceSnapshot {\\n    instanceId: string;\\n    title: string;\\n    actions: readonly ActionSurfaceAction[];\\n    availability?: ActionSurfaceAvailability;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "ANY_VERB", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"const ANY_VERB = '*';\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "ATTACHMENT_LIMITS", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const ATTACHMENT_LIMITS = {\\n    maxAttachments: 8,\\n    maxIdLength: 32,\\n    idPattern: /^[A-Za-z0-9][A-Za-z0-9_\\\\-.:]*$/,\\n    maxAssetUrlLength: 512,\\n    maxSocketNameLength: 64,\\n    socketNamePattern: /^[A-Za-z0-9][A-Za-z0-9_\\\\-.]*$/,\\n    maxPresetLength: 32,\\n    maxOffsetM: 2,\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "AttachmentEntry", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface AttachmentEntry {\\n    id: string;\\n    asset: string;\\n    socket: string;\\n    position: Vec3;\\n    rotationEulerDeg: Vec3;\\n    preset: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/state.ts\"\n  }\n]" },
  { "AttachmentsMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface AttachmentsMessage {\\n    attachments: AttachmentEntry[];\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "AvatarComposition", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type AvatarComposition = {\\n    compositionDigest: string;\\n    appearanceDigest: string;\\n    hostKind: 'character';\\n    appearance: {\\n        hiddenSlotIds: string[];\\n        materialOverrides: Record<string, unknown>;\\n        colorOverrides: Record<string, unknown>;\\n    };\\n    instanceThumbnailUrl: string | null;\\n    base: {\\n        itemId: string;\\n        modelUrl: string | null;\\n    };\\n    materials: Record<string, unknown>;\\n    visibleAddOns: Array<{\\n        slotId: string;\\n        itemId: string;\\n        modelUrl: string | null;\\n        visualOps: unknown[];\\n        mountSocket?: string | null;\\n        fill?: 'all' | 'each';\\n    }>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "AvatarLoadout", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type AvatarLoadout = {\\n    version: 1;\\n    body: UniversalAvatarBody;\\n    baseShape: AvatarBaseShape;\\n    customAvatar: EquippedAvatar;\\n    equippedSlots: AvatarLoadoutSlot[];\\n    inventory: InventoryItem[];\\n    updatedAt: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "AvatarLoadoutPatch", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type AvatarLoadoutPatch = {\\n    baseShape?: AvatarBaseShape;\\n    customAvatarInventoryItemId?: string | null;\\n    equippedSlots?: Record<string, string | null>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "AvatarRefreshMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type AvatarRefreshMessage = Record<string, never>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "Balance", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type Balance = {\\n    lix: number;\\n    coins: number;\\n    updatedAt?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "bindStackSafety", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function bindStackSafety(stack: ModeStack, target: EventTarget = globalThis, visibilityTarget: VisibilitySafetyTarget | null = (globalThis as {\\n    document?: VisibilitySafetyTarget;\\n}).document ?? null): () => void {\\n    const clear = () => void stack.clear(true);\\n    const onVisibility = () => {\\n        if (visibilityTarget?.hidden)\\n            clear();\\n    };\\n    target.addEventListener('blur', clear);\\n    visibilityTarget?.addEventListener('visibilitychange', onVisibility);\\n    target.addEventListener('pagehide', clear);\\n    target.addEventListener('beforeunload', clear);\\n    return () => {\\n        target.removeEventListener('blur', clear);\\n        visibilityTarget?.removeEventListener('visibilitychange', onVisibility);\\n        target.removeEventListener('pagehide', clear);\\n        target.removeEventListener('beforeunload', clear);\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "BroadcastPayload", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type BroadcastPayload = Record<string, RoomVarValue>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "CAMERA_CAPABILITY_FLAGS", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const CAMERA_CAPABILITY_FLAGS: readonly CameraCapabilityFlag[] = [\\n    'photo',\\n    'video',\\n    'drone',\\n    'twoHandPose',\\n    'focusPoint',\\n    'exposureBias',\\n    'worldAudio',\\n];\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "CAMERA_LENS_PRESETS", "value", "runtime_facade", "[\n  {\n    \"declaration\": \"const CAMERA_LENS_PRESETS = [0.5, 1, 2, 3, 5] as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CAMERA_MAX_ZOOM", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const CAMERA_MAX_ZOOM: number = CAMERA_LENS_PRESETS[CAMERA_LENS_PRESETS.length - 1];\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "CAMERA_MIN_ZOOM", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const CAMERA_MIN_ZOOM: number = CAMERA_LENS_PRESETS[0];\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "CameraAim", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraAim = {\\n    yaw: number;\\n    pitch: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraAspect", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraAspect = 'portrait' | 'landscape' | 'square' | 'free';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraCapabilityFlag", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type CameraCapabilityFlag = Exclude<keyof HelixCameraCapability, 'unavailableReason'>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "cameraCapabilityGate", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function cameraCapabilityGate(control: HelixCameraControl, state: HelixCameraState): CameraCapabilityFlag | null {\\n    const { capability } = state;\\n    const media = control.media ?? state.media;\\n    const escalatesVideo = control.media === 'video' ||\\n        control.recording === true ||\\n        (control.shutter === true && media === 'video');\\n    if (escalatesVideo && !capability.video)\\n        return 'video';\\n    if (control.shutter === true && media === 'photo' && !capability.photo)\\n        return 'photo';\\n    if (control.spatial === 'drone' || control.session === 'drone') {\\n        if (!capability.drone)\\n            return 'drone';\\n    }\\n    if (control.session === 'device-hold' && !capability.twoHandPose)\\n        return 'twoHandPose';\\n    if (control.focusPoint !== undefined && !capability.focusPoint)\\n        return 'focusPoint';\\n    if (control.exposureBias !== undefined && !capability.exposureBias)\\n        return 'exposureBias';\\n    if (control.worldAudio === true && !capability.worldAudio)\\n        return 'worldAudio';\\n    return null;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "CameraControlTarget", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraControlTarget = 'camera' | 'avatar';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraDroneLockMode", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraDroneLockMode = 'free' | 'lock' | 'orbit';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraFilterId", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraFilterId = 'original' | 'vivid' | 'warm' | 'cool' | 'mono';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraFocusPoint", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraFocusPoint = {\\n    x: number;\\n    y: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraIntent", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface CameraIntent {\\n    target: {\\n        x: number;\\n        y: number;\\n        z: number;\\n    };\\n    distance: number;\\n    fov?: number;\\n    orbit?: {\\n        yawDeg: number;\\n        pitchDeg: number;\\n    };\\n    blendSeconds?: number;\\n    clamp?: {\\n        yaw?: [number, number];\\n        pitch?: [number, number];\\n    };\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "CameraLensPreset", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraLensPreset = (typeof CAMERA_LENS_PRESETS)[number];\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraMediaMode", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraMediaMode = 'photo' | 'video';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraSessionState", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraSessionState = 'inactive' | 'device-hold' | 'rear' | 'selfie' | 'drone';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraSpatialMode", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraSpatialMode = 'rear' | 'selfie' | 'drone';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraTimerSeconds", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraTimerSeconds = 0 | 3 | 10;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CameraVector3", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type CameraVector3 = {\\n    x: number;\\n    y: number;\\n    z: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "Capability", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type Capability = ModeCapability;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "captureCanvas", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export async function captureCanvas(source: HTMLCanvasElement, opts: CaptureOptions = {}): Promise<Blob> {\\n    const type = opts.type ?? 'image/jpeg';\\n    const quality = opts.quality ?? 0.92;\\n    const { sx, sy, sw, sh } = cropRectForAspect(source.width, source.height, opts.aspect ?? 'free');\\n    if (sw <= 0 || sh <= 0) {\\n        throw new Error('Helix.camera: nothing to capture (empty canvas)');\\n    }\\n    const out = typeof OffscreenCanvas !== 'undefined'\\n        ? new OffscreenCanvas(sw, sh)\\n        : Object.assign(document.createElement('canvas'), { width: sw, height: sh });\\n    const ctx = (out as HTMLCanvasElement).getContext('2d');\\n    if (!ctx)\\n        throw new Error('Helix.camera: 2D canvas context unavailable');\\n    ctx.drawImage(source, sx, sy, sw, sh, 0, 0, sw, sh);\\n    return canvasToBlob(out as HTMLCanvasElement, type, quality);\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "CaptureOptions", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type CaptureOptions = {\\n    aspect?: CameraAspect;\\n    type?: string;\\n    quality?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "clampCameraZoom", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function clampCameraZoom(zoom: number): number {\\n    if (!Number.isFinite(zoom))\\n        return 1;\\n    return Math.min(CAMERA_MAX_ZOOM, Math.max(CAMERA_MIN_ZOOM, zoom));\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "ClientMessagePayloads", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ClientMessagePayloads {\\n    [ClientMessageType.State]: StateMessage;\\n    [ClientMessageType.Ability]: AbilityMessage;\\n    [ClientMessageType.Action]: ActionMessage;\\n    [ClientMessageType.Gesture]: GestureMessage;\\n    [ClientMessageType.Attachments]: AttachmentsMessage;\\n    [ClientMessageType.PurchaseReceipt]: PurchaseReceiptMessage;\\n    [ClientMessageType.AvatarRefresh]: AvatarRefreshMessage;\\n    [ClientMessageType.EmoteRefresh]: EmoteRefreshMessage;\\n    [ClientMessageType.EmoteJoin]: EmoteJoinMessage;\\n    [ClientMessageType.EntityState]: EntityStateMessage;\\n    [ClientMessageType.EntityStateBatch]: EntityStateBatchMessage;\\n    [ClientMessageType.Ping]: PingMessage;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ClientMessageType", "value_and_type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const ClientMessageType = {\\n    State: 'state',\\n    Ability: 'ability',\\n    Action: 'action',\\n    Gesture: 'gesture',\\n    Attachments: 'attachments',\\n    PurchaseReceipt: 'purchaseReceipt',\\n    AvatarRefresh: 'avatarRefresh',\\n    EmoteRefresh: 'emoteRefresh',\\n    EmoteJoin: 'emoteJoin',\\n    EntityState: 'entityState',\\n    EntityStateBatch: 'entityStateBatch',\\n    Ping: 'ping',\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  },\n  {\n    \"declaration\": \"export type ClientMessageType = (typeof ClientMessageType)[keyof typeof ClientMessageType];\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "cloneCameraCapability", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function cloneCameraCapability(capability: HelixCameraCapability): HelixCameraCapability {\\n    void CLONED_CAPABILITY_FIELDS;\\n    return {\\n        photo: capability.photo,\\n        video: capability.video,\\n        drone: capability.drone,\\n        twoHandPose: capability.twoHandPose,\\n        focusPoint: capability.focusPoint,\\n        exposureBias: capability.exposureBias,\\n        worldAudio: capability.worldAudio,\\n        ...(capability.unavailableReason !== undefined\\n            ? { unavailableReason: capability.unavailableReason }\\n            : {}),\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "cloneCameraState", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function cloneCameraState(state: HelixCameraState): HelixCameraState {\\n    void CLONED_STATE_FIELDS;\\n    return {\\n        session: state.session,\\n        media: state.media,\\n        spatial: state.spatial,\\n        controlTarget: state.controlTarget,\\n        lens: state.lens,\\n        zoom: state.zoom,\\n        filter: state.filter,\\n        timerSeconds: state.timerSeconds,\\n        aim: { yaw: state.aim.yaw, pitch: state.aim.pitch },\\n        shutter: {\\n            sequence: state.shutter.sequence,\\n            recording: state.shutter.recording,\\n            timerRemainingSeconds: state.shutter.timerRemainingSeconds,\\n        },\\n        capability: cloneCameraCapability(state.capability),\\n        ...(state.focusPoint ? { focusPoint: { x: state.focusPoint.x, y: state.focusPoint.y } } : {}),\\n        ...(state.exposureBias !== undefined ? { exposureBias: state.exposureBias } : {}),\\n        ...(state.drone ? { drone: cloneCameraDroneState(state.drone) } : {}),\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "ConsumeResult", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type ConsumeResult = {\\n    applied: boolean;\\n    balance: number;\\n    reason?: 'insufficient';\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "CONTRACT_VERSION", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const CONTRACT_VERSION = 34 as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/index.ts\"\n  }\n]" },
  { "createActionSurfaceInputMap", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function createActionSurfaceInputMap() {\\n    return {\\n        navigate: {\\n            action: 'move' as const,\\n            label: 'Navigate',\\n            touch: { kind: 'stick' as const, zone: 'left' as const },\\n            continuous: true,\\n            repeatMs: 140,\\n        },\\n        activate: {\\n            action: 'primary' as const,\\n            label: 'Select',\\n            touch: { kind: 'tap' as const, zone: 'primary' as const },\\n        },\\n        back: {\\n            action: 'cancel' as const,\\n            label: 'Back',\\n            touch: { kind: 'button' as const, zone: 'secondary' as const },\\n        },\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "createActionSurfaceMode", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function createActionSurfaceMode(options: ActionSurfaceModeOptions): InteractionMode<void> {\\n    let unbind: Array<() => void> = [];\\n    return {\\n        id: options.id ?? 'helix.action-surface',\\n        suppress: {\\n            locomotion: true,\\n            defaultHud: true,\\n            interaction: true,\\n            ...options.suppression,\\n        },\\n        input: createActionSurfaceInputMap(),\\n        enter(ctx: ModeContext<void>) {\\n            unbind = [\\n                ctx.onVerb('navigate', (event) => options.surface.handleVerb('navigate', event)),\\n                ctx.onVerb('activate', (event) => options.surface.handleVerb('activate', event)),\\n                ctx.onVerb('back', (event) => {\\n                    const dismissingRoot = event.phase === 'start' && options.surface.mode === 'browse';\\n                    options.surface.handleVerb('back', event);\\n                    if (dismissingRoot)\\n                        ctx.release();\\n                }),\\n            ];\\n        },\\n        exit() {\\n            for (const dispose of unbind.splice(0))\\n                dispose();\\n            options.surface.endEngagement();\\n        },\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "createDreamerAudioClient", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function createDreamerAudioClient(options: DreamerAudioClientOptions): DreamerAudioClient {\\n    const apiOrigin = normalizeApiOrigin(options.apiBaseUrl);\\n    const dreamerBase = `${apiOrigin}/api/v1/dreamer`;\\n    const requestFetch = options.fetch ?? globalThis.fetch;\\n    if (!requestFetch) {\\n        throw new DreamerAudioCapabilityUnavailableError();\\n    }\\n    async function token(): Promise<string | null> {\\n        const source = options.accessToken;\\n        return typeof source === 'function' ? await source() : (source ?? null);\\n    }\\n    async function request<T>(path: string, init: RequestInit = {}): Promise<T> {\\n        const accessToken = await token();\\n        const headers = new Headers(init.headers);\\n        if (accessToken)\\n            headers.set('Authorization', `Bearer ${accessToken}`);\\n        const url = `${dreamerBase}${path}`;\\n        const response = await requestFetch(url, { ...init, headers });\\n        if (!response.ok) {\\n            let body = '';\\n            try {\\n                body = await response.text();\\n            }\\n            catch {\\n            }\\n            throw new DreamerAudioApiError(response.status, url, body);\\n        }\\n        return (await response.json()) as T;\\n    }\\n    async function start(input: DreamerAudioGenerateRequest): Promise<{\\n        jobId: string;\\n        status: 'queued';\\n    }> {\\n        return request('/assets/generate', {\\n            method: 'POST',\\n            headers: { 'Content-Type': 'application/json' },\\n            body: JSON.stringify({ kind: 'audio', ...input }),\\n        });\\n    }\\n    function get(jobId: string): Promise<DreamerAudioJob> {\\n        return request(`/assets/jobs/${encodeURIComponent(jobId)}`);\\n    }\\n    async function generate(input: DreamerAudioGenerateRequest, pollOptions: DreamerAudioPollOptions = {}): Promise<DreamerAudioSucceededJob> {\\n        const accepted = await start(input);\\n        const pollIntervalMs = pollOptions.pollIntervalMs ?? options.pollIntervalMs ?? 2000;\\n        const timeoutMs = pollOptions.timeoutMs ?? options.timeoutMs ?? DREAMER_AUDIO_TIMEOUT_MS;\\n        const deadline = Date.now() + timeoutMs;\\n        while (Date.now() < deadline) {\\n            const job = await get(accepted.jobId);\\n            pollOptions.onProgress?.(job);\\n            if (job.status === 'succeeded')\\n                return job;\\n            if (job.status === 'failed') {\\n                throw new DreamerAudioJobFailedError(job);\\n            }\\n            await sleep(pollIntervalMs);\\n        }\\n        throw new DreamerAudioJobTimeoutError(accepted.jobId, timeoutMs);\\n    }\\n    async function generateAndResolve(input: DreamerAudioGenerateRequest, pollOptions: DreamerAudioPollOptions = {}): Promise<DreamerGeneratedVaultAudio> {\\n        const job = await generate(input, pollOptions);\\n        if (!job.vaultAssetId) {\\n            throw new DreamerAudioVaultUnavailableError(job);\\n        }\\n        const vault = createVaultClient({\\n            apiBaseUrl: apiOrigin,\\n            fetch: requestFetch,\\n            accessToken: options.accessToken,\\n        });\\n        const resolved = await vault.resolve<'audio'>(job.vaultAssetId);\\n        const loadPlan = vault.createLoadPlan(resolved);\\n        if (loadPlan.loader !== 'audio') {\\n            throw new Error(`HELIX Vault asset ${job.vaultAssetId} is not a loadable audio artifact.`);\\n        }\\n        return { job, resolved, loadPlan };\\n    }\\n    return { start, get, generate, generateAndResolve };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "createMaterialLibrary", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function createMaterialLibrary(assetBaseUrl: string, catalog: HelixMaterialCatalog): HelixMaterialLibrary {\\n    assertCatalog(catalog);\\n    const base = trimBase(assetBaseUrl);\\n    const byId = new Map(catalog.materials.map((material) => [material.id, material]));\\n    const catalogResolutions = (Array.isArray(catalog.resolutions) ? catalog.resolutions : []).filter((tier) => !!tier && typeof tier.key === 'string' && tier.key.trim() !== '');\\n    const absoluteMaps = (maps: HelixMaterialMapPaths): HelixMaterialMapPaths => ({\\n        albedo: absoluteAssetUrl(base, maps.albedo),\\n        normal: absoluteAssetUrl(base, maps.normal),\\n        orm: absoluteAssetUrl(base, maps.orm),\\n    });\\n    const absoluteOptions = (material: HelixMaterialDefinition): HelixMaterialResolutionOption[] => materialResolutionOptions(material).map((option) => ({\\n        ...option,\\n        maps: absoluteMaps(option.maps),\\n    }));\\n    return {\\n        assetBaseUrl: base,\\n        catalog,\\n        catalogResolutions,\\n        list(query = {}) {\\n            const needle = query.query?.trim().toLowerCase() ?? '';\\n            const matches = catalog.materials.filter((material) => {\\n                if (query.category && material.category !== query.category)\\n                    return false;\\n                if (query.kind && material.kind !== query.kind)\\n                    return false;\\n                if (!needle)\\n                    return true;\\n                return [material.id, material.name, material.category, ...material.tags]\\n                    .join(' ')\\n                    .toLowerCase()\\n                    .includes(needle);\\n            });\\n            return query.limit === undefined\\n                ? matches\\n                : matches.slice(0, Math.max(0, Math.floor(query.limit)));\\n        },\\n        get(id) {\\n            return byId.get(id) ?? null;\\n        },\\n        resolutions(id) {\\n            const material = byId.get(id);\\n            return material ? absoluteOptions(material) : [];\\n        },\\n        resolve(id, options = {}) {\\n            const material = byId.get(id);\\n            if (!material)\\n                return null;\\n            const available = absoluteOptions(material);\\n            const requested = options.resolution?.trim() ?? '';\\n            const chosen = requested\\n                ? findResolutionOption(id, requested, available)\\n                : defaultResolutionOption(material, available);\\n            return {\\n                ...material,\\n                ...(chosen ? { maps: chosen.maps } : {}),\\n                ...(material.resolutions\\n                    ? {\\n                        resolutions: Object.fromEntries(available.map((option) => [\\n                            option.key,\\n                            {\\n                                ...(option.pixels === null ? {} : { pixels: option.pixels }),\\n                                maps: option.maps,\\n                            },\\n                        ])),\\n                    }\\n                    : {}),\\n                ...(chosen\\n                    ? {\\n                        resolution: {\\n                            key: chosen.key,\\n                            pixels: chosen.pixels,\\n                            available: available.map((option) => option.key),\\n                        },\\n                    }\\n                    : {}),\\n            };\\n        },\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "createMaterialsNamespace", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function createMaterialsNamespace(fetchCatalog?: typeof fetch): {\\n    load(assetBaseUrl: string): Promise<HelixMaterialLibrary>;\\n    fromCatalog(assetBaseUrl: string, catalog: HelixMaterialCatalog): HelixMaterialLibrary;\\n    clearCache(): void;\\n} {\\n    const cache = new Map<string, Promise<HelixMaterialLibrary>>();\\n    return {\\n        load(assetBaseUrl) {\\n            const base = trimBase(assetBaseUrl);\\n            const existing = cache.get(base);\\n            if (existing)\\n                return existing;\\n            const requestFetch = fetchCatalog ?? globalThis.fetch;\\n            if (!requestFetch) {\\n                return Promise.reject(new Error('HELIX materials require a runtime with fetch support'));\\n            }\\n            const request = requestFetch(`${base}/catalog.json`)\\n                .then(async (response) => {\\n                if (!response.ok) {\\n                    throw new Error(`HELIX material catalog request failed (${response.status})`);\\n                }\\n                const catalog = (await response.json()) as unknown;\\n                assertCatalog(catalog);\\n                return createMaterialLibrary(base, catalog);\\n            })\\n                .catch((error) => {\\n                cache.delete(base);\\n                throw error;\\n            });\\n            cache.set(base, request);\\n            return request;\\n        },\\n        fromCatalog: createMaterialLibrary,\\n        clearCache() {\\n            cache.clear();\\n        },\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "createModuleAccessors", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export function createModuleAccessors(sessionId: string, moduleId: string, state: () => AccessorRoomState | null | undefined): ModuleAccessors {\\n    const dynamicVars = (module: AccessorDynamicModuleState): Record<string, unknown> => {\\n        const output: Record<string, unknown> = {};\\n        const copy = <T>(bag: KeyedBag<T> | undefined, accept: (value: unknown) => value is T): void => {\\n            if (!bag)\\n                return;\\n            if (typeof (bag as {\\n                forEach?: unknown;\\n            }).forEach === 'function') {\\n                (bag as {\\n                    forEach(cb: (value: T, key: string) => void): void;\\n                }).forEach((value, key) => {\\n                    if (accept(value))\\n                        output[key] = value;\\n                });\\n                return;\\n            }\\n            for (const [key, value] of Object.entries(bag))\\n                if (accept(value))\\n                    output[key] = value;\\n        };\\n        copy(module.booleans, (value): value is boolean => typeof value === 'boolean');\\n        copy(module.numbers, (value): value is number => typeof value === 'number' && Number.isFinite(value));\\n        copy(module.strings, (value): value is string => typeof value === 'string');\\n        return output;\\n    };\\n    const current = (): AccessorModuleState | undefined => {\\n        const root = state();\\n        const wireKey = `m:${moduleId}`;\\n        const flat = root?.modules?.[wireKey];\\n        if (flat)\\n            return flat;\\n        for (let index = 0;; index++) {\\n            const chunk = root?.moduleChunks?.[`c${index}`];\\n            if (!chunk)\\n                break;\\n            const module = chunk[wireKey];\\n            if (module)\\n                return module;\\n        }\\n        const dynamic = keyedCollectionEntry<AccessorDynamicModuleState>(root?.dynamicModules, moduleId);\\n        return dynamic === undefined\\n            ? undefined\\n            : {\\n                roomVars: dynamicVars(dynamic),\\n                phase: dynamic.phase,\\n            };\\n    };\\n    const varsFor = (collection: KeyedBag<PlayerBag> | KeyedBag<EntityBag> | undefined, id: string): Record<string, unknown> | undefined => keyedCollectionEntry<PlayerBag | EntityBag>(collection, id)?.vars;\\n    return {\\n        moduleId,\\n        vars: createVarsView(() => current()?.roomVars),\\n        me: createVarsView(() => varsFor(current()?.players, sessionId)),\\n        player: (id) => createVarsView(() => varsFor(current()?.players, id)),\\n        entity: (id) => createVarsView(() => varsFor(current()?.entities, id)),\\n        phase: () => current()?.phase ?? '',\\n        timerDeadline: (name, key) => keyedCollectionEntry<number>(current()?.timerDeadlines, key === undefined ? name : `${name}|${key}`) ?? 0,\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/multiplayer-accessors.ts\"\n  }\n]" },
  { "createRoomAccessors", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export function createRoomAccessors(sessionId: string, state: () => AccessorRoomState | null | undefined): RoomAccessors {\\n    const vars = createVarsView(() => state()?.roomVars);\\n    const playerVars = (id: string): Record<string, unknown> | undefined => {\\n        const players = state()?.players;\\n        if (!players)\\n            return undefined;\\n        return keyedCollectionEntry<PlayerBag>(players, id)?.vars;\\n    };\\n    const player = (id: string): VarsView => createVarsView(() => playerVars(id));\\n    const currentTurn = (): string => {\\n        const order = vars.list('turnOrder');\\n        if (order.length === 0)\\n            return '';\\n        const idx = vars.num('turnIndex');\\n        const entry = order[idx];\\n        return entry === null || entry === undefined ? '' : String(entry);\\n    };\\n    return {\\n        vars,\\n        me: player(sessionId),\\n        player,\\n        phase: () => state()?.phase ?? '',\\n        currentTurn,\\n        isMyTurn: () => {\\n            const turn = currentTurn();\\n            return turn !== '' && turn === sessionId;\\n        },\\n        module: (moduleId) => createModuleAccessors(sessionId, moduleId, state),\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/multiplayer-accessors.ts\"\n  }\n]" },
  { "createSealedDeviceDefinitionResolver", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function createSealedDeviceDefinitionResolver(projection: SealedDeviceDefinitionProjection, options: SealedDeviceDefinitionResolverOptions = {}): SealedDeviceDefinitionResolver {\\n    assertProjectionEnvelope(projection);\\n    const normalized = normalizeSealedDeviceDefinitionProjection(projection);\\n    if (normalized === null)\\n        throw new Error('Sealed Device definition is invalid');\\n    const canonical = canonicalJson(normalized.definition);\\n    const definition = normalized.definition;\\n    const expectedChecksum = normalized.definitionChecksumSha256;\\n    const expiresAtMs = normalized.expiresAtEpochSeconds * 1000;\\n    const now = options.now ?? Date.now;\\n    const sha256 = options.sha256 ?? defaultSha256;\\n    let disposed = false;\\n    let validated: Promise<DeviceDefinitionV1> | undefined;\\n    const resolver = (async (reference: DeviceDefinitionReference): Promise<DeviceDefinitionV1> => {\\n        assertActive(disposed, expiresAtMs, now);\\n        assertDefinitionIdentity(definition, reference);\\n        validated ??= (async () => {\\n            const bytes = new TextEncoder().encode(canonical);\\n            const actualChecksum = (await sha256(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer)).toLowerCase();\\n            if (!SHA256_HEX.test(actualChecksum) ||\\n                actualChecksum !== expectedChecksum) {\\n                throw new Error('Sealed Device definition checksum mismatch');\\n            }\\n            assertDefinitionIdentity(definition, reference);\\n            if (definition.compatibility !== undefined &&\\n                (!Array.isArray(definition.compatibility?.hosts) ||\\n                    !definition.compatibility.hosts.includes('world'))) {\\n                throw new Error(`Device ${definition.id} does not support World hosts`);\\n            }\\n            if (!definition.state ||\\n                typeof definition.state !== 'object' ||\\n                Array.isArray(definition.state) ||\\n                !Array.isArray(definition.interactions)) {\\n                throw new Error('Sealed Device definition structure is invalid');\\n            }\\n            return definition;\\n        })();\\n        const result = await validated;\\n        assertActive(disposed, expiresAtMs, now);\\n        return result;\\n    }) as SealedDeviceDefinitionResolver;\\n    resolver.dispose = () => {\\n        disposed = true;\\n        validated = undefined;\\n    };\\n    return resolver;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/device-definition-resolver.ts\"\n  }\n]" },
  { "createVarsView", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export function createVarsView(source: () => VarsBag): VarsView {\\n    const read = (name: string): unknown => {\\n        if (name.charCodeAt(0) === 0x24)\\n            return undefined;\\n        const bag = source();\\n        if (bag === null || bag === undefined)\\n            return undefined;\\n        const direct = bag[name];\\n        if (direct !== undefined)\\n            return direct;\\n        return readThroughChunks(bag, name);\\n    };\\n    return {\\n        num: (name, fallback = 0) => {\\n            const v = read(name);\\n            return typeof v === 'number' && Number.isFinite(v) ? v : fallback;\\n        },\\n        str: (name, fallback = '') => {\\n            const v = read(name);\\n            if (typeof v === 'string')\\n                return v;\\n            return v !== null && v !== undefined && typeof v === 'object' ? String(v) : fallback;\\n        },\\n        bool: (name, fallback = false) => {\\n            const v = read(name);\\n            return typeof v === 'boolean' ? v : fallback;\\n        },\\n        vec3: (name) => {\\n            const v = read(name) as {\\n                x?: unknown;\\n                y?: unknown;\\n                z?: unknown;\\n            } | null | undefined;\\n            return v && typeof v.x === 'number' && typeof v.y === 'number' && typeof v.z === 'number'\\n                ? { x: v.x, y: v.y, z: v.z }\\n                : null;\\n        },\\n        list: <T = unknown>(name: string): T[] => {\\n            const v = read(name);\\n            if (Array.isArray(v))\\n                return v.slice() as T[];\\n            if (v !== null && v !== undefined && typeof v === 'object' && Symbol.iterator in (v as object))\\n                return [...(v as Iterable<T>)];\\n            return [];\\n        },\\n        raw: read,\\n        has: (name) => read(name) !== undefined,\\n        names: () => {\\n            const bag = source();\\n            if (bag === null || bag === undefined)\\n                return [];\\n            const logical = (o: Record<string, unknown>): string[] => Object.keys(o).filter((k) => k.charCodeAt(0) !== 0x24 && o[k] !== undefined);\\n            if (!chunkAt(bag, 0))\\n                return logical(bag);\\n            const out: string[] = [];\\n            for (let i = 0;; i++) {\\n                const chunk = chunkAt(bag, i);\\n                if (!chunk)\\n                    return out;\\n                out.push(...logical(chunk));\\n            }\\n        },\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/multiplayer-accessors.ts\"\n  }\n]" },
  { "createVaultClient", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function createVaultClient(options: VaultClientOptions): VaultClient {\\n    const vaultBase = normalizeVaultBase(options.apiBaseUrl);\\n    const requestFetch = options.fetch ?? globalThis.fetch;\\n    if (!requestFetch) {\\n        throw new VaultCapabilityUnavailableError('fetch');\\n    }\\n    const hasher = options.sha256 ?? defaultSha256;\\n    async function token(): Promise<string | null> {\\n        const source = options.accessToken;\\n        return typeof source === 'function' ? await source() : (source ?? null);\\n    }\\n    async function request(path: string, init: RequestInit = {}): Promise<Response> {\\n        const accessToken = await token();\\n        const headers = new Headers(init.headers);\\n        if (accessToken)\\n            headers.set('Authorization', `Bearer ${accessToken}`);\\n        const url = `${vaultBase}${path}`;\\n        const response = await requestFetch(url, { ...init, headers });\\n        if (!response.ok) {\\n            let body = '';\\n            try {\\n                body = await response.text();\\n            }\\n            catch {\\n            }\\n            throw new VaultApiError(response.status, url, body);\\n        }\\n        return response;\\n    }\\n    async function json<T>(path: string): Promise<T> {\\n        const response = await request(path);\\n        return (await response.json()) as T;\\n    }\\n    async function resolve<K extends VaultAssetKind = VaultAssetKind>(handleOrAssetId: VaultAssetHandle | string): Promise<VaultResolvedAsset<K>> {\\n        const assetId = typeof handleOrAssetId === 'string'\\n            ? handleOrAssetId\\n            : handleOrAssetId.assetId;\\n        const asset = await json<VaultAssetDetail<K>>(`/assets/${encodeURIComponent(assetId)}`);\\n        const handle = asHandle(asset, handleOrAssetId);\\n        if (handle.version === asset.artifact.version) {\\n            return {\\n                handle,\\n                asset,\\n                artifact: asset.artifact,\\n                relatedArtifactsComplete: true,\\n            };\\n        }\\n        const versionRows = await versions(assetId);\\n        const row = versionRows.find((candidate) => candidate.handle.version === handle.version);\\n        if (!row) {\\n            throw new VaultApiError(404, `${vaultBase}/assets/${encodeURIComponent(assetId)}/versions`, `Version ${handle.version} does not exist for this asset.`);\\n        }\\n        return {\\n            handle,\\n            asset,\\n            artifact: {\\n                assetId,\\n                version: handle.version,\\n                url: row.url,\\n                urlKind: row.url ? 'cdn' : 'unavailable',\\n                mimeType: row.mimeType,\\n                sizeBytes: row.sizeBytes,\\n                checksumSha256: row.checksumSha256,\\n                relatedArtifacts: [],\\n            },\\n            relatedArtifactsComplete: false,\\n        };\\n    }\\n    async function versions(assetId: string): Promise<VaultAssetVersion[]> {\\n        const response = await json<{\\n            items: Array<Omit<VaultAssetVersion, 'handle'> & {\\n                version: number;\\n            }>;\\n        }>(`/assets/${encodeURIComponent(assetId)}/versions`);\\n        return response.items.map(({ version, ...row }) => ({\\n            ...row,\\n            handle: { assetId, version },\\n        }));\\n    }\\n    async function downloadReference(reference: VaultArtifactReference, fetchUrl: string, verifyChecksum = reference.checksumSha256 !== null, useAuth = false): Promise<VaultDownloadedArtifact> {\\n        if (!reference.url && !useAuth) {\\n            throw new Error('HELIX Vault related artifact has no servable URL.');\\n        }\\n        const response = useAuth\\n            ? await request(fetchUrl)\\n            : await requestFetch(fetchUrl, { redirect: 'follow' });\\n        if (!response.ok) {\\n            let body = '';\\n            try {\\n                body = await response.text();\\n            }\\n            catch {\\n            }\\n            throw new VaultApiError(response.status, fetchUrl, body);\\"
    "n        }\\n        const bytes = await response.arrayBuffer();\\n        let checksumVerified = false;\\n        if (verifyChecksum && reference.checksumSha256) {\\n            const actual = (await hasher(bytes)).toLowerCase();\\n            const expected = reference.checksumSha256.toLowerCase();\\n            if (actual !== expected) {\\n                throw new VaultChecksumMismatchError(expected, actual);\\n            }\\n            checksumVerified = true;\\n        }\\n        return { reference, bytes, checksumVerified };\\n    }\\n    async function download(handleOrAssetId: VaultAssetHandle | string, installOptions: Pick<VaultInstallOptions, 'verifyChecksum'> = {}): Promise<VaultDownloadedArtifact> {\\n        const resolved = await resolve(handleOrAssetId);\\n        if (!resolved.artifact.url) {\\n            throw new VaultArtifactUnavailableError(resolved.handle);\\n        }\\n        const reference = primaryReference(resolved.artifact);\\n        const path = `/assets/${encodeURIComponent(resolved.handle.assetId)}/download?version=${resolved.handle.version}`;\\n        return downloadReference(reference, path, installOptions.verifyChecksum, true);\\n    }\\n    function downloadArtifact(reference: VaultArtifactReference, installOptions: Pick<VaultInstallOptions, 'verifyChecksum'> = {}): Promise<VaultDownloadedArtifact> {\\n        if (!reference.url) {\\n            return Promise.reject(new Error('HELIX Vault related artifact has no servable URL.'));\\n        }\\n        return downloadReference(reference, reference.url, installOptions.verifyChecksum);\\n    }\\n    return {\\n        search(query = {}) {\\n            return json<VaultSearchResult>(`/assets${queryString(query)}`);\\n        },\\n        get<K extends VaultAssetKind = VaultAssetKind>(assetId: string) {\\n            return json<VaultAssetDetail<K>>(`/assets/${encodeURIComponent(assetId)}`);\\n        },\\n        versions,\\n        resolve,\\n        createLoadPlan: createVaultLoadPlan,\\n        download,\\n        downloadArtifact,\\n        async install(handleOrAssetId, installOptions = {}) {\\n            const resolved = await resolve(handleOrAssetId);\\n            const plan = createVaultLoadPlan(resolved);\\n            const primary = await download(resolved.handle, installOptions);\\n            const roles = new Set(installOptions.relatedRoles ?? []);\\n            const related = await Promise.all(plan.related\\n                .filter((reference) => roles.has(reference.role))\\n                .map((reference) => downloadArtifact(reference, installOptions)));\\n            return { asset: resolved, plan, primary, related };\\n        },\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "createVaultLoadPlan", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function createVaultLoadPlan(resolved: VaultResolvedAsset): VaultLoadPlan {\\n    const { asset, artifact, handle } = resolved;\\n    const mime = artifact.mimeType.toLowerCase();\\n    const primary = primaryReference(artifact);\\n    const related = relatedReferences(artifact.relatedArtifacts);\\n    if (asset.kind === 'unreal_package') {\\n        throw new VaultUnsupportedRuntimeError(asset.kind, mime, 'Unreal packages require an Unreal runtime.');\\n    }\\n    if (mime === 'model/gltf-binary' || mime === 'model/gltf+json') {\\n        const purpose = asset.kind === 'character' ||\\n            asset.kind === 'animation' ||\\n            asset.kind === 'environment' ||\\n            asset.kind === 'terrain'\\n            ? asset.kind\\n            : 'prop';\\n        return { loader: 'gltf', purpose, handle, primary, related };\\n    }\\n    if (mime === 'image/png' ||\\n        mime === 'image/jpeg' ||\\n        mime === 'image/webp' ||\\n        mime === 'image/ktx2') {\\n        if (asset.kind !== 'texture' && asset.kind !== 'decal') {\\n            throw new VaultUnsupportedRuntimeError(asset.kind, mime, 'Image artifacts are only valid as texture or decal resources.');\\n        }\\n        return {\\n            loader: 'image',\\n            purpose: asset.kind,\\n            handle,\\n            primary,\\n            related,\\n        };\\n    }\\n    if (mime.startsWith('audio/')) {\\n        return { loader: 'audio', purpose: 'audio', handle, primary, related };\\n    }\\n    if (mime === 'image/vnd.radiance' || mime === 'image/x-exr') {\\n        return {\\n            loader: 'hdr-environment',\\n            purpose: 'sky',\\n            format: mime === 'image/vnd.radiance' ? 'hdr' : 'exr',\\n            handle,\\n            primary,\\n            related,\\n        };\\n    }\\n    if (mime === 'model/vnd.gaussian-splat.spz') {\\n        return {\\n            loader: 'gaussian-splat',\\n            purpose: asset.kind === 'environment' ? 'environment' : 'gaussian_splat',\\n            format: 'spz',\\n            scope: splatScope(asset),\\n            handle,\\n            primary,\\n            related,\\n        };\\n    }\\n    const descriptors: Partial<Record<string, {\\n        purpose: Extract<VaultLoadPlan, {\\n            loader: 'helix-descriptor';\\n        }>['purpose'];\\n        schema: Extract<VaultLoadPlan, {\\n            loader: 'helix-descriptor';\\n        }>['schema'];\\n    }>> = {\\n        'application/vnd.helix.material+json': {\\n            purpose: 'material',\\n            schema: 'helix-material@1',\\n        },\\n        'application/vnd.helix.scene+json': {\\n            purpose: 'scene',\\n            schema: 'helix-scene@1',\\n        },\\n        'application/vnd.helix.terrain+json': {\\n            purpose: 'terrain',\\n            schema: 'helix-terrain@1',\\n        },\\n        'application/vnd.helix.vfx+json': {\\n            purpose: 'vfx',\\n            schema: 'helix-vfx@1',\\n        },\\n        'application/vnd.helix.sky+json': {\\n            purpose: 'sky',\\n            schema: 'helix-sky@1',\\n        },\\n    };\\n    const descriptor = descriptors[mime];\\n    if (descriptor) {\\n        return {\\n            loader: 'helix-descriptor',\\n            ...descriptor,\\n            handle,\\n            primary,\\n            related,\\n        };\\n    }\\n    throw new VaultUnsupportedRuntimeError(asset.kind, mime, 'No format adapter is registered for this artifact.');\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "CropRect", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type CropRect = {\\n    sx: number;\\n    sy: number;\\n    sw: number;\\n    sh: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "cropRectForAspect", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function cropRectForAspect(w: number, h: number, aspect: CameraAspect = 'free'): CropRect {\\n    if (w <= 0 || h <= 0)\\n        return { sx: 0, sy: 0, sw: Math.max(0, w), sh: Math.max(0, h) };\\n    if (aspect === 'free')\\n        return { sx: 0, sy: 0, sw: w, sh: h };\\n    const target = aspect === 'square' ? 1 : ASPECT_RATIO[aspect];\\n    const current = w / h;\\n    let sw = w;\\n    let sh = h;\\n    if (current > target) {\\n        sw = Math.round(h * target);\\n    }\\n    else {\\n        sh = Math.round(w / target);\\n    }\\n    const sx = Math.round((w - sw) / 2);\\n    const sy = Math.round((h - sh) / 2);\\n    return { sx, sy, sw, sh };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "DataStoreListOptions", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type DataStoreListOptions = {\\n    cursor?: string;\\n    limit?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "DataStoreListPage", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type DataStoreListPage = {\\n    keys: string[];\\n    nextCursor?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "DataStoreListPayload", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type DataStoreListPayload = {\\n    prefix?: string;\\n    cursor?: string;\\n    limit?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "DataStoreWriteOptions", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type DataStoreWriteOptions = {\\n    expectedVersion?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "DebugLogEntry", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type DebugLogEntry = {\\n    level: DebugLogLevel;\\n    args: string[];\\n    t: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "DebugLogLevel", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type DebugLogLevel = 'log' | 'info' | 'warn' | 'error' | 'debug';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "DEFAULT_MATERIAL_PACK_SLUG", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"const DEFAULT_MATERIAL_PACK_SLUG = 'helix-materials';\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "DEFAULT_PUSH_TO_TALK_KEY", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const DEFAULT_PUSH_TO_TALK_KEY = 'n';\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/voice.ts\"\n  }\n]" },
  { "defaultCameraCapability", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function defaultCameraCapability(): HelixCameraCapability {\\n    return {\\n        photo: false,\\n        video: false,\\n        drone: false,\\n        twoHandPose: false,\\n        focusPoint: false,\\n        exposureBias: false,\\n        worldAudio: false,\\n        unavailableReason: 'the runtime has not reported camera capability yet',\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "defaultCameraState", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function defaultCameraState(): HelixCameraState {\\n    return {\\n        session: 'inactive',\\n        media: 'photo',\\n        spatial: 'rear',\\n        controlTarget: 'camera',\\n        lens: 1,\\n        zoom: 1,\\n        filter: 'original',\\n        timerSeconds: 0,\\n        aim: { yaw: 0, pitch: 0 },\\n        shutter: { sequence: 0, recording: false, timerRemainingSeconds: 0 },\\n        capability: defaultCameraCapability(),\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "DeviceAppDefinitionV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface DeviceAppDefinitionV1 {\\n    type: DeviceAppTypeV1;\\n    entry?: string;\\n    allowedOrigins?: string[];\\n    permissions?: DeviceAppPermissionV1[];\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DeviceAppPermissionV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type DeviceAppPermissionV1 = 'web.content' | 'network.fetch' | 'web.externalNavigation' | 'audio.media';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DeviceAppTypeV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type DeviceAppTypeV1 = 'localWeb' | 'remoteWeb' | 'youtube' | 'canvas' | 'remoteImage' | 'ownerImage';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DeviceBusBudgetsV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface DeviceBusBudgetsV1 {\\n    maxGraphLinks: number;\\n    maxLinksPerEndpoint: number;\\n    maxHopsPerDelivery: number;\\n    maxQueuedDeliveriesPerTick: number;\\n    maxDeliveriesPerLinkPerTick: number;\\n    replayWindow: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DeviceBusEnvelopeV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface DeviceBusEnvelopeV1<T = unknown> {\\n    schemaVersion: 1;\\n    deliveryId: string;\\n    linkId: string;\\n    source: DevicePortAddressV1;\\n    target: DevicePortAddressV1;\\n    kind: DevicePortKindV1;\\n    semantic: string;\\n    hostSequence: number;\\n    hopCount: number;\\n    payload?: T;\\n    stream?: {\\n        status: DeviceStreamRoutabilityV1;\\n        handle?: DeviceStreamHandleV1;\\n        mediaKind: 'audio' | 'video';\\n    };\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DeviceDefinitionReference", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type DeviceDefinitionReference = {\\n    id: string;\\n    version: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DeviceDefinitionV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface DeviceDefinitionV1 {\\n    format: 'helix.device';\\n    formatVersion: 1;\\n    id: string;\\n    version: string;\\n    state: Record<string, {\\n        type: 'boolean' | 'integer' | 'float' | 'string' | 'enum';\\n        default?: string | number | boolean;\\n        persist?: boolean;\\n    }>;\\n    interactions: Array<{\\n        id: string;\\n        label: string;\\n        verb?: 'use' | 'open' | 'close' | 'toggle' | 'play' | 'sit' | 'custom';\\n        maxDistanceM?: number;\\n        presentation?: {\\n            kind: 'webPanel';\\n            app: string;\\n        };\\n        control?: {\\n            kind: 'number';\\n            stateKey: string;\\n            min?: number;\\n            max?: number;\\n            step?: number;\\n            unit?: string;\\n        } | {\\n            kind: 'choice';\\n            stateKey: string;\\n            options: Array<{\\n                value: string;\\n                label: string;\\n                disabled?: boolean;\\n                reason?: string;\\n            }>;\\n        } | {\\n            kind: 'text';\\n            stateKey: string;\\n            placeholder?: string;\\n            maxLength?: number;\\n            inputMode?: ActionSurfaceAction['inputMode'];\\n        };\\n    }>;\\n    compatibility?: {\\n        hosts: Array<'home' | 'world'>;\\n        requiredCapabilities?: string[];\\n    };\\n    capabilities?: string[];\\n    ports?: DevicePortV1[];\\n    apps?: Record<string, DeviceAppDefinitionV1>;\\n    [key: string]: unknown;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DevicePortAddressV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface DevicePortAddressV1 {\\n    instanceId: string;\\n    port: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DevicePortAuthorityV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type DevicePortAuthorityV1 = 'local' | 'server';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DevicePortDataTypeV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type DevicePortDataTypeV1 = 'boolean' | 'number' | 'string' | 'media.audio' | 'media.video';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DevicePortDirectionV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type DevicePortDirectionV1 = 'input' | 'output' | 'bidirectional';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DevicePortKindV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type DevicePortKindV1 = 'value' | 'event' | 'command' | 'stream';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DevicePortV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface DevicePortV1 {\\n    id: string;\\n    direction: DevicePortDirectionV1;\\n    kind: DevicePortKindV1;\\n    dataType: DevicePortDataTypeV1;\\n    interface?: string;\\n    semantic?: string;\\n    authority?: DevicePortAuthorityV1;\\n    stateKey?: string;\\n    autoPair?: boolean;\\n    maxLinks?: number;\\n    routability?: DeviceStreamRoutabilityV1;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DeviceStreamHandleV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type DeviceStreamHandleV1 = string & {\\n    readonly __deviceStreamHandleV1: unique symbol;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DeviceStreamRoutabilityV1", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type DeviceStreamRoutabilityV1 = 'routable' | 'embedded-only' | 'unavailable';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "DeviceTrialSpawn", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type DeviceTrialSpawn = Readonly<{\\n    placementId: string;\\n    itemId: string;\\n    kind: 'device';\\n    name: string;\\n    modelUrl: string | null;\\n    transform: Readonly<{\\n        position: readonly [number, number, number];\\n        yawDeg: number;\\n        scale: number;\\n    }>;\\n    expiresAt: number;\\n    deviceDefinition: Readonly<{\\n        id: string;\\n        version: string;\\n    }>;\\n    definition: DeviceDefinitionV1;\\n    definitionChecksumSha256: string;\\n    functionalPin: Readonly<{\\n        continuumPackageId: string;\\n        continuumPackageVersion: string;\\n        continuumManifestCid: string;\\n    }>;\\n    composition: unknown;\\n}>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "DISTRIBUTION_CAPABILITY_MESSAGE", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const DISTRIBUTION_CAPABILITY_MESSAGE = 'distributionCapability';\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "DISTRIBUTION_CAPABILITY_RESULT", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const DISTRIBUTION_CAPABILITY_RESULT = 'distributionCapabilityResult';\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "DistributionCapabilityRequestMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type DistributionCapabilityRequestMessage = {\\n    requestId: string;\\n    ref: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "DistributionCapabilityResultMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type DistributionCapabilityResultMessage = {\\n    requestId: string;\\n    capability: string;\\n    expiresAt: string;\\n    ref: string;\\n} | {\\n    requestId: string;\\n    error: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "DREAMER_AUDIO_TIMEOUT_MS", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const DREAMER_AUDIO_TIMEOUT_MS = 30 * 60000;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioApiError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class DreamerAudioApiError extends Error {\\n    constructor(readonly status: number, readonly url: string, readonly responseBody: string) {\\n        super(`HELIX Dreamer audio request failed (${status})${responseBody ? `: ${responseBody}` : ''}`);\\n        this.name = 'DreamerAudioApiError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioArtifact", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioArtifact = {\\n    url: string;\\n    contentType: string;\\n    sizeBytes: number;\\n    kind: 'audio';\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioCapabilityUnavailableError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class DreamerAudioCapabilityUnavailableError extends Error {\\n    constructor() {\\n        super('HELIX Dreamer audio requires Fetch API support in this runtime.');\\n        this.name = 'DreamerAudioCapabilityUnavailableError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioClient", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioClient = {\\n    start(input: DreamerAudioGenerateRequest): Promise<{\\n        jobId: string;\\n        status: 'queued';\\n    }>;\\n    get(jobId: string): Promise<DreamerAudioJob>;\\n    generate(input: DreamerAudioGenerateRequest, options?: DreamerAudioPollOptions): Promise<DreamerAudioSucceededJob>;\\n    generateAndResolve(input: DreamerAudioGenerateRequest, options?: DreamerAudioPollOptions): Promise<DreamerGeneratedVaultAudio>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioClientOptions", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioClientOptions = {\\n    apiBaseUrl: string;\\n    fetch?: typeof fetch;\\n    accessToken?: string | null | (() => string | null | Promise<string | null>);\\n    pollIntervalMs?: number;\\n    timeoutMs?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioFailedJob", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioFailedJob = DreamerAudioJobBase & {\\n    status: 'failed';\\n    error?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioGenerateRequest", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioGenerateRequest = DreamerSoundEffectRequest | DreamerMusicRequest | DreamerTextToSpeechRequest;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioGenerationMode", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioGenerationMode = 'sound_effect' | 'music' | 'text_to_speech';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioJob", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioJob = DreamerAudioPendingJob | DreamerAudioFailedJob | DreamerAudioSucceededJob;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioJobFailedError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class DreamerAudioJobFailedError extends Error {\\n    constructor(readonly job: DreamerAudioFailedJob) {\\n        super(`HELIX Dreamer audio job ${job.jobId} failed: ${job.error ?? 'no details'}`);\\n        this.name = 'DreamerAudioJobFailedError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioJobTimeoutError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class DreamerAudioJobTimeoutError extends Error {\\n    constructor(readonly jobId: string, readonly timeoutMs: number) {\\n        super(`HELIX Dreamer audio job ${jobId} timed out after ${timeoutMs}ms.`);\\n        this.name = 'DreamerAudioJobTimeoutError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioPendingJob", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioPendingJob = DreamerAudioJobBase & {\\n    status: 'queued' | 'running';\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioPollOptions", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioPollOptions = {\\n    pollIntervalMs?: number;\\n    timeoutMs?: number;\\n    onProgress?: (job: DreamerAudioJob) => void;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioSucceededJob", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioSucceededJob = DreamerAudioJobBase & {\\n    status: 'succeeded';\\n    asset: DreamerAudioArtifact;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioVaultUnavailableError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class DreamerAudioVaultUnavailableError extends Error {\\n    constructor(readonly job: DreamerAudioSucceededJob) {\\n        super(`HELIX Dreamer audio job ${job.jobId} succeeded without a published Vault asset.`);\\n        this.name = 'DreamerAudioVaultUnavailableError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerAudioVoiceSettings", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerAudioVoiceSettings = {\\n    stability?: number;\\n    similarityBoost?: number;\\n    style?: number;\\n    speed?: number;\\n    speakerBoost?: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerGeneratedVaultAudio", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerGeneratedVaultAudio = {\\n    job: DreamerAudioSucceededJob;\\n    resolved: VaultResolvedAsset<'audio'>;\\n    loadPlan: Extract<VaultLoadPlan, {\\n        loader: 'audio';\\n    }>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerMusicRequest", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerMusicRequest = DreamerAudioRequestBase & {\\n    audioMode: 'music';\\n    prompt: string;\\n    durationSeconds?: number;\\n    forceInstrumental?: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerSoundEffectRequest", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerSoundEffectRequest = DreamerAudioRequestBase & {\\n    audioMode: 'sound_effect';\\n    prompt: string;\\n    durationSeconds?: number;\\n    loop?: boolean;\\n    promptInfluence?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DreamerTextToSpeechRequest", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type DreamerTextToSpeechRequest = DreamerAudioRequestBase & {\\n    audioMode: 'text_to_speech';\\n    text: string;\\n    voiceId: string;\\n    languageCode?: string;\\n    seed?: number;\\n    voiceSettings?: DreamerAudioVoiceSettings;\\n    pronunciationDictionaryIds?: string[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/dreamerAudio.ts\"\n  }\n]" },
  { "DynamicModuleState", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface DynamicModuleState {\\n    phase: string;\\n    externalRevision: number;\\n    booleans: Record<string, boolean>;\\n    numbers: Record<string, number>;\\n    strings: Record<string, string>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/room.ts\"\n  }\n]" },
  { "EMOTE_LIMITS", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const EMOTE_LIMITS = {\\n    maxEntries: 10,\\n    maxClipUrlLength: 512,\\n    maxLabelLength: 64,\\n    maxPairOffsetM: 3,\\n    maxOfferAtS: 600,\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "EmoteEntry", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface EmoteEntry {\\n    slot: 'r0' | 'r1' | 'r2' | 'r3' | 'r4' | 'r5' | 'r6' | 'r7' | 'sit' | 'lie';\\n    itemId: string;\\n    clip: string;\\n    playback: 'oneshot' | 'loop';\\n    audio?: string;\\n    label?: string;\\n    intro?: string;\\n    outro?: string;\\n    roles?: {\\n        joinerClip: string;\\n        offerAtS: number;\\n        offsetX: number;\\n        offsetZ: number;\\n        offsetYawDeg: number;\\n    };\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/state.ts\"\n  }\n]" },
  { "EmoteJoinMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface EmoteJoinMessage {\\n    initiator: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "EmoteRefreshMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type EmoteRefreshMessage = Record<string, never>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "Entitlements", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type Entitlements = {\\n    v: 1;\\n    passes: Record<string, {\\n        since: number;\\n        expiresAt: number | null;\\n        active: boolean;\\n    }>;\\n    balances: Record<string, number>;\\n    owned: Record<string, number>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "EntityState", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface EntityState {\\n    id: string;\\n    kind: string;\\n    vehicleSeats?: Record<string, string>;\\n    position?: Vec3;\\n    velocity?: Vec3;\\n    angularVelocity?: Vec3;\\n    orientation?: Quat;\\n    controller: string;\\n    authorityEpoch: number;\\n    vars: RoomVars & {\\n        readonly vDetachBits?: number;\\n    };\\n    posT: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/room.ts\"\n  }\n]" },
  { "EntityStateAckEntry", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface EntityStateAckEntry {\\n    e: string;\\n    seq: number;\\n    p: [number, number, number];\\n    lv?: [number, number, number];\\n    q?: [number, number, number, number];\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "EntityStateAckMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface EntityStateAckMessage {\\n    moduleId?: string;\\n    acks: EntityStateAckEntry[];\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "EntityStateBatchEntry", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface EntityStateBatchEntry {\\n    transactionId?: string;\\n    e: string;\\n    p: [number, number, number];\\n    lv?: [number, number, number];\\n    av?: [number, number, number];\\n    q?: [number, number, number, number];\\n    v?: Record<string, RoomVarValue>;\\n    ep?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "EntityStateBatchMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface EntityStateBatchMessage {\\n    finalRest?: {\\n        scope?: FinalRestProvenance;\\n        version: 1;\\n        requestId: number;\\n        group: string;\\n        transactionId: string;\\n    };\\n    moduleId?: string;\\n    seq: number;\\n    states: EntityStateBatchEntry[];\\n    tMs?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "EntityStateMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface EntityStateMessage {\\n    transactionId?: string;\\n    moduleId?: string;\\n    entity: string;\\n    seq: number;\\n    position: Vec3;\\n    velocity?: Vec3;\\n    angularVelocity?: Vec3;\\n    orientation?: Quat;\\n    vars?: Record<string, RoomVarValue>;\\n    epoch?: number;\\n    tMs?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "EquippedAvatar", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type EquippedAvatar = {\\n    source: 'equipped' | 'auto' | 'default' | 'trial';\\n    inventoryItemId?: string | null;\\n    itemId: string | null;\\n    glbUrl: string | null;\\n    contentHash?: string | null;\\n    skeleton: string | null;\\n    composition?: AvatarComposition | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "EquippedEmote", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type EquippedEmote = {\\n    slot: 'r0' | 'r1' | 'r2' | 'r3' | 'r4' | 'r5' | 'r6' | 'r7' | 'sit' | 'lie';\\n    itemId: string;\\n    clip: string;\\n    playback: 'oneshot' | 'loop';\\n    audio?: string;\\n    label?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "EquippedEmotes", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type EquippedEmotes = {\\n    emotes: EquippedEmote[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "EquippedLocomotionPack", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type EquippedLocomotionPack = {\\n    pack: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "FINAL_REST_REPLY", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const FINAL_REST_REPLY = '__helix:finalRest';\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "FINAL_REST_TIMEOUT_MS", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const FINAL_REST_TIMEOUT_MS = 120000;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "FinalRestGrant", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface FinalRestGrant {\\n    scope?: FinalRestProvenance;\\n    version: 1;\\n    status: 'claimed';\\n    group: string;\\n    requestId: number;\\n    transactionId: string;\\n    members: FinalRestMember[];\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "finalRestId", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const finalRestId = (v: unknown): v is string => typeof v === 'string' && /^[a-zA-Z0-9_.:-]{1,128}$/.test(v);\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "FinalRestMember", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface FinalRestMember {\\n    id: string;\\n    epoch: number;\\n    position: Vec3;\\n    velocity: Vec3;\\n    angularVelocity: Vec3;\\n    orientation: Quat;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "FinalRestProvenance", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface FinalRestProvenance extends FinalRestScope {\\n    generation: number;\\n    engagementEpoch?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "FinalRestReply", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type FinalRestReply = FinalRestGrant | {\\n    scope?: FinalRestProvenance;\\n    version: 1;\\n    status: 'rejected' | 'invalidated';\\n    group: string;\\n    requestId: number;\\n    transactionId?: string;\\n    reason: string;\\n    entries?: Array<{\\n        id: string;\\n        accepted: boolean;\\n    }>;\\n} | {\\n    scope?: FinalRestProvenance;\\n    version: 1;\\n    status: 'committed';\\n    group: string;\\n    requestId: number;\\n    transactionId: string;\\n    snapshot: GroupRestSnapshotMessage;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "FinalRestScope", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface FinalRestScope {\\n    moduleId: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "finalRestScopeKey", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const finalRestScopeKey = (group: string, scope?: FinalRestScope): string => scope === undefined ? group : `m:${scope.moduleId}|${group}`;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "finalRestSequence", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const finalRestSequence = (v: unknown): v is number => Number.isSafeInteger(v) && (v as number) > 0;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "GESTURE_LIMITS", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const GESTURE_LIMITS = {\\n    maxClipNameLength: 64,\\n    clipNamePattern: /^[A-Za-z0-9][A-Za-z0-9_\\\\-.:]*$/,\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "GestureEventMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface GestureEventMessage {\\n    player: string;\\n    clip: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "GestureMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface GestureMessage {\\n    clip: string;\\n    play: GesturePlay;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "GesturePlay", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type GesturePlay = 'oneshot' | 'loop' | 'stop';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "GroupRestSnapshotEntity", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface GroupRestSnapshotEntity {\\n    epoch?: number;\\n    velocity?: Vec3;\\n    angularVelocity?: Vec3;\\n    id: string;\\n    pos: Vec3;\\n    rot: Quat;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "GroupRestSnapshotMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface GroupRestSnapshotMessage {\\n    scope?: FinalRestProvenance;\\n    commit?: {\\n        version: 1;\\n        transactionId: string;\\n        requestId: number;\\n    };\\n    group: string;\\n    seq: number;\\n    entities: GroupRestSnapshotEntity[];\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "Helix", "value", "runtime_facade", "[\n  {\n    \"declaration\": \"const Helix = new HelixSdk();\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/index.ts\"\n  }\n]" },
  { "HelixCameraCapability", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixCameraCapability = {\\n    photo: boolean;\\n    video: boolean;\\n    drone: boolean;\\n    twoHandPose: boolean;\\n    focusPoint: boolean;\\n    exposureBias: boolean;\\n    worldAudio: boolean;\\n    unavailableReason?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixCameraControl", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixCameraControl = {\\n    session?: CameraSessionState;\\n    media?: CameraMediaMode;\\n    spatial?: CameraSpatialMode;\\n    controlTarget?: CameraControlTarget;\\n    zoom?: number;\\n    filter?: CameraFilterId;\\n    timerSeconds?: CameraTimerSeconds;\\n    aim?: CameraAim;\\n    focusPoint?: CameraFocusPoint;\\n    exposureBias?: number;\\n    shutter?: boolean;\\n    recording?: boolean;\\n    worldAudio?: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixCameraDroneCommand", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixCameraDroneCommand = {\\n    lockMode?: CameraDroneLockMode;\\n    subjectUserId?: string;\\n    transform?: HelixCameraDroneTransform;\\n    velocity?: CameraVector3;\\n    interpolationSeconds?: number;\\n    returnToAvatar?: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixCameraDroneState", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixCameraDroneState = {\\n    droneId: string;\\n    transform: HelixCameraDroneTransform;\\n    velocity: CameraVector3;\\n    interpolationSeconds: number;\\n    lockMode: CameraDroneLockMode;\\n    subjectUserId: string;\\n    returning: boolean;\\n    returnDistance: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixCameraDroneTransform", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixCameraDroneTransform = {\\n    position: CameraVector3;\\n    yaw: number;\\n    pitch: number;\\n    roll: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixCameraShutter", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixCameraShutter = {\\n    sequence: number;\\n    recording: boolean;\\n    timerRemainingSeconds: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixCameraState", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixCameraState = {\\n    session: CameraSessionState;\\n    media: CameraMediaMode;\\n    spatial: CameraSpatialMode;\\n    controlTarget: CameraControlTarget;\\n    lens: CameraLensPreset;\\n    zoom: number;\\n    filter: CameraFilterId;\\n    timerSeconds: CameraTimerSeconds;\\n    aim: CameraAim;\\n    shutter: HelixCameraShutter;\\n    capability: HelixCameraCapability;\\n    focusPoint?: CameraFocusPoint;\\n    exposureBias?: number;\\n    drone?: HelixCameraDroneState;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixDeviceFormFactor", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixDeviceFormFactor = 'phone' | 'tablet';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixDeviceState", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixDeviceState = {\\n    open: boolean;\\n    form?: HelixDeviceFormFactor;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixInitResult", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixInitResult = {\\n    embedded: boolean;\\n    world: HelixWorldContext | null;\\n    user: HelixUser | null;\\n    runtimeFidelity: RuntimeFidelityIntent | null;\\n    customizerSubject: PackageCustomizerSubject | null;\\n    customizerSource: PackageCustomizerSource | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/index.ts\"\n  }\n]" },
  { "HelixInteractionPrompt", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixInteractionPrompt = {\\n    id: string;\\n    title: string;\\n    description?: string;\\n    input?: {\\n        key?: string;\\n        button?: string;\\n        label?: string;\\n    };\\n    actionLabel?: string;\\n    state?: HelixPromptState;\\n    priority?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixMatchmakingError", "value_and_type", "runtime_facade", "[\n  {\n    \"declaration\": \"export class HelixMatchmakingError extends Error {\\n    readonly code: HelixMatchmakingErrorCode;\\n    readonly status: number | null;\\n    readonly backendCode: string | null;\\n    readonly match: MatchFound | null;\\n    readonly memberUserId: string | null;\\n    constructor(code: HelixMatchmakingErrorCode, message: string, status: number | null = null, backendCode: string | null = null, cause?: unknown, match: MatchFound | null = null, memberUserId: string | null = null) {\\n        super(message, cause === undefined ? undefined : { cause });\\n        this.name = 'HelixMatchmakingError';\\n        this.code = code;\\n        this.status = status;\\n        this.backendCode = backendCode;\\n        this.match = match;\\n        this.memberUserId = memberUserId;\\n        Object.setPrototypeOf(this, HelixMatchmakingError.prototype);\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "HelixMatchmakingErrorCode", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixMatchmakingErrorCode = 'unknown-queue' | 'already-queued' | 'already-matched' | 'not-party-leader' | 'party-too-large' | 'party-changed' | 'guests-cannot-queue' | 'rate-limited' | 'missing-permission' | 'unavailable' | 'not-ready' | 'invalid-argument' | 'request-failed';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "HelixMaterialCatalog", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type HelixMaterialCatalog = {\\n    schemaVersion: number | string;\\n    pack: {\\n        slug: string;\\n        version: string;\\n    };\\n    resolutions?: HelixMaterialResolutionTier[];\\n    materials: HelixMaterialDefinition[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "HelixMaterialDefinition", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type HelixMaterialDefinition = {\\n    id: string;\\n    name: string;\\n    category: string;\\n    kind: HelixMaterialKind;\\n    tags: string[];\\n    repeatPerMeter: number;\\n    roughness: number;\\n    metalness: number;\\n    swatch: string;\\n    normalScale: number;\\n    maps?: HelixMaterialMapPaths;\\n    defaultResolution?: string;\\n    resolutions?: Record<string, HelixMaterialResolutionVariant>;\\n    source?: {\\n        provider?: string;\\n        assetId?: string;\\n        license?: string;\\n        url?: string;\\n        sourceResolution?: string;\\n        [key: string]: unknown;\\n    };\\n    glass?: {\\n        color: number;\\n        opacity: number;\\n        transmission: number;\\n    };\\n    water?: {\\n        color: number;\\n        opacity: number;\\n        transmission: number;\\n        roughness: number;\\n        waveScale?: number;\\n        waveSpeed?: number;\\n    };\\n    tiling?: {\\n        technique?: string;\\n        wrap?: number;\\n        accepted?: boolean;\\n        measuredAt?: string;\\n        wrapBefore?: number;\\n        wrapAfter?: number;\\n        bandAfter?: number;\\n        [key: string]: unknown;\\n    };\\n    [key: string]: unknown;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "HelixMaterialKind", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type HelixMaterialKind = 'texture' | 'glass' | 'procedural_water';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "HelixMaterialLibrary", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type HelixMaterialLibrary = {\\n    readonly assetBaseUrl: string;\\n    readonly catalog: HelixMaterialCatalog;\\n    readonly catalogResolutions: HelixMaterialResolutionTier[];\\n    list(query?: HelixMaterialQuery): HelixMaterialDefinition[];\\n    get(id: string): HelixMaterialDefinition | null;\\n    resolutions(id: string): HelixMaterialResolutionOption[];\\n    resolve(id: string, options?: {\\n        resolution?: string;\\n    }): ResolvedHelixMaterial | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "HelixMaterialMapPaths", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type HelixMaterialMapPaths = {\\n    albedo: string;\\n    normal: string;\\n    orm: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "HelixMaterialQuery", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type HelixMaterialQuery = {\\n    query?: string;\\n    category?: string;\\n    kind?: HelixMaterialKind;\\n    limit?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "HelixMaterialResolutionOption", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type HelixMaterialResolutionOption = {\\n    key: string;\\n    pixels: number | null;\\n    maps: HelixMaterialMapPaths;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "HelixMaterialResolutionTier", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type HelixMaterialResolutionTier = {\\n    key: string;\\n    pixels?: number;\\n    default?: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "HelixMaterialResolutionVariant", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type HelixMaterialResolutionVariant = {\\n    pixels?: number;\\n    maps: HelixMaterialMapPaths;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "HelixMultiplayerRosterEntry", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixMultiplayerRosterEntry = {\\n    sessionId: string;\\n    userId: string;\\n    displayName: string;\\n    avatarUrl: string;\\n    isSelf: boolean;\\n    connected: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixMultiplayerState", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixMultiplayerState = {\\n    roomId: string;\\n    sessionId: string;\\n    playerCount: number;\\n    maxPlayers: number | null;\\n    players: HelixMultiplayerRosterEntry[];\\n    roomType?: string;\\n    ticketed?: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixNotification", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixNotification = {\\n    kind: HelixNotificationKind;\\n    title: string;\\n    message?: string;\\n    timeoutMs?: number;\\n    actionLabel?: string;\\n    actionHref?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixNotificationKind", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixNotificationKind = 'success' | 'failure' | 'notification' | 'message';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixPartyError", "value_and_type", "runtime_facade", "[\n  {\n    \"declaration\": \"export class HelixPartyError extends Error {\\n    readonly code: HelixPartyErrorCode;\\n    readonly status: number | null;\\n    readonly backendCode: string | null;\\n    constructor(code: HelixPartyErrorCode, message: string, status: number | null = null, backendCode: string | null = null, cause?: unknown) {\\n        super(message, cause === undefined ? undefined : { cause });\\n        this.name = 'HelixPartyError';\\n        this.code = code;\\n        this.status = status;\\n        this.backendCode = backendCode;\\n        Object.setPrototypeOf(this, HelixPartyError.prototype);\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "HelixPartyErrorCode", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixPartyErrorCode = 'not-party-leader' | 'cannot-invite' | 'party-full' | 'too-many-invites' | 'already-in-party' | 'party-changed' | 'not-in-party' | 'unknown-party-member' | 'invite-not-found' | 'invite-expired' | 'code-not-found' | 'guests-cannot-party' | 'rate-limited' | 'missing-permission' | 'unavailable' | 'not-ready' | 'invalid-argument' | 'request-failed';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "HelixPresenceActivity", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixPresenceActivity = {\\n    state: string;\\n    details?: string;\\n    image?: string;\\n    party?: {\\n        current: number;\\n        max: number;\\n    };\\n    joinable?: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixPromptState", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixPromptState = 'default' | 'available' | 'locked' | 'busy';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixRequestError", "value_and_type", "runtime_facade", "[\n  {\n    \"declaration\": \"export class HelixRequestError extends Error {\\n    readonly code?: string;\\n    constructor(message: string, code?: string) {\\n        super(message);\\n        this.name = 'HelixRequestError';\\n        this.code = code;\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/index.ts\"\n  }\n]" },
  { "HelixRoom", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface HelixRoom {\\n    claimPhysicsGroup(action: string, group: string, args?: Record<string, RoomVarValue>, scope?: FinalRestScope): Promise<FinalRestGrant>;\\n    commitPhysicsGroup(transactionId: string, states: readonly EntityStateBatchEntry[]): Promise<GroupRestSnapshotMessage>;\\n    onPhysicsGroupRest(group: string, callback: (snapshot: GroupRestSnapshotMessage) => void, scope?: FinalRestScope): void;\\n    readonly roomId: string;\\n    readonly sessionId: string;\\n    readonly roomType: string | null;\\n    readonly instanceKey: string | null;\\n    readonly effectiveUploadHz: number;\\n    readonly state: RoomState;\\n    onStateChange(cb: (state: RoomState) => void): () => void;\\n    onAdd(collection: 'players', cb: (player: PlayerState, id: string) => void): void;\\n    onAdd(collection: 'entities', cb: (entity: EntityState, id: string) => void): void;\\n    onRemove(collection: 'players', cb: (player: PlayerState, id: string) => void): void;\\n    onRemove(collection: 'entities', cb: (entity: EntityState, id: string) => void): void;\\n    onPlayerAvatarChanged(cb: (playerId: string, avatarUrl: string) => void): () => void;\\n    onMessage<Payload = unknown>(type: string, cb: (payload: Payload) => void): () => void;\\n    onTicket(cb: (ticket: RoomTicket) => void): () => void;\\n    onModuleFused(cb: (event: ModuleFusedMessage) => void): void;\\n    onModuleWake(cb: (event: ModuleWakeMessage) => void): void;\\n    onModuleSleep(cb: (event: ModuleSleepMessage) => void): void;\\n    onModuleEngagement(cb: (event: ModuleEngagementMessage) => void): () => void;\\n    onModuleState(cb: (snapshot: ModuleStateSnapshot) => void): void;\\n    onModuleEffect(cb: (effect: ModuleEffect) => void): void;\\n    onStateAck(cb: (ack: StateAckMessage) => void): void;\\n    onEntityStateAck(cb: (ack: EntityStateAckMessage) => void): void;\\n    sendState(input: ReplicaInput): void;\\n    sendAbility(ability: string, active: boolean): void;\\n    sendAction(name: string, args?: Record<string, RoomVarValue>, moduleId?: string): void;\\n    sendModuleAction(request: ModuleActionRequest): boolean;\\n    sendVehicleComponentAction(request: VehicleComponentActionRequest): boolean;\\n    sendVehicleDetachAction(request: VehicleDetachActionRequest): boolean;\\n    requestModuleEngagement(moduleId: string, action: string, args?: Record<string, RoomVarValue>): void;\\n    releaseModuleEngagement(moduleId: string, action: string, args?: Record<string, RoomVarValue>): boolean;\\n    moduleEngagement(moduleId: string): ModuleEngagementLease | null;\\n    sendGesture(clip: string, play: GesturePlay): void;\\n    sendAttachments(attachments: AttachmentEntry[]): void;\\n    sendAvatarRefresh(): void;\\n    sendEmoteRefresh(): void;\\n    requestDistributionCapability(ref: string): Promise<DistributionCapabilityGrant>;\\n    sendEmoteJoin(initiator: string): void;\\n    uploadEntity(entityId: string, input: {\\n        position: Vec3;\\n        velocity?: Vec3;\\n        angularVelocity?: Vec3;\\n        orientation?: Quat;\\n        vars?: Record<string, RoomVarValue>;\\n        epoch?: number;\\n    }, moduleId?: string): void;\\n    uploadEntities(entities: ReadonlyArray<{\\n        id: string;\\n        position: Vec3;\\n        velocity?: Vec3;\\n        angularVelocity?: Vec3;\\n        orientation?: Quat;\\n        vars?: Record<string, RoomVarValue>;\\n        epoch?: number;\\n    }>, moduleId?: string): void;\\n    pendingInputs(): readonly StateMessage[];\\n    acknowledge(seq: number): void;\\n    onDrop(cb: () => void): void;\\n    onReconnect(cb: () => void): void;\\n    onLeave(cb: (code: number, reason: HelixRoomLeaveReason) => void): void;\\n    leave(): Promise<void>;\\n    readonly vars: VarsView;\\n    readonly me: VarsView;\\n    player(id: string): VarsView;\\n    phase(): string;\\n    currentTurn(): string;\\n    isMyTurn(): boolean;\\n    module(moduleId: string): ModuleAccessors;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer.ts\"\n  }\n]" },
  { "HelixRoomJoinError", "value_and_type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export class HelixRoomJoinError extends Error {\\n    readonly code: HelixRoomJoinErrorCode;\\n    readonly status: number | null;\\n    constructor(code: HelixRoomJoinErrorCode, message: string, status: number | null = null, cause?: unknown) {\\n        super(message, cause === undefined ? undefined : { cause });\\n        this.name = 'HelixRoomJoinError';\\n        this.code = code;\\n        this.status = status;\\n        Object.setPrototypeOf(this, HelixRoomJoinError.prototype);\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/multiplayer.ts\"\n  }\n]" },
  { "HelixRoomJoinErrorCode", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type HelixRoomJoinErrorCode = 'unknown-room-type' | 'ticket-required' | 'ticket-invalid' | 'room-type-unavailable' | 'instance-closed' | 'rejoin-failed' | 'invalid-target' | 'not-ready' | 'switch-in-progress' | 'join-in-progress' | 'cancelled' | 'left' | 'join-failed';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer.ts\"\n  }\n]" },
  { "HelixRoomLeaveReason", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type HelixRoomLeaveReason = 'switch' | 'leave' | 'dropped';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer.ts\"\n  }\n]" },
  { "HelixSession", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixSession = {\\n    token: string;\\n    expiresAt: string;\\n    scopes: string[];\\n    trial?: HelixTrial;\\n    user: HelixUser;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixUser", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixUser = {\\n    id: string;\\n    username: string;\\n    displayName: string | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixVoiceAudioFeatures", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface HelixVoiceAudioFeatures {\\n    rms: number;\\n    zeroCrossingRate: number;\\n    bands: readonly [number, number, number, number, number];\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/voice.ts\"\n  }\n]" },
  { "HelixVoiceDevice", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixVoiceDevice = {\\n    deviceId: string;\\n    label: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixVoiceMicMode", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixVoiceMicMode = 'ptt' | 'open' | 'muted';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixVoicePermission", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixVoicePermission = 'prompt' | 'granted' | 'denied';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixVoiceSettings", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixVoiceSettings = {\\n    micMode: HelixVoiceMicMode;\\n    micDeviceId?: string;\\n    micDeviceLabel?: string;\\n    mutedUserIds: string[];\\n    micVolume?: number;\\n    outputVolume?: number;\\n    micAutoSensitivity?: boolean;\\n    micSensitivity?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixVoiceState", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixVoiceState = {\\n    available: boolean;\\n    connected: boolean;\\n    micMode: HelixVoiceMicMode;\\n    pttKey?: string;\\n    transmitting: boolean;\\n    permission: HelixVoicePermission;\\n    activeDeviceId?: string;\\n    devices: HelixVoiceDevice[];\\n    speakingUserIds: string[];\\n    channelId?: string;\\n    audioBlocked?: boolean;\\n    error?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "HelixVoiceVec3", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type HelixVoiceVec3 = {\\n    x: number;\\n    y: number;\\n    z: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/voice.ts\"\n  }\n]" },
  { "HelixWorldContext", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type HelixWorldContext = {\\n    id: string;\\n    slug: string;\\n    title: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "IK_LIMITS", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const IK_LIMITS = {\\n    maxReachDistanceM: 3,\\n    maxLookDistanceM: 50,\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "InputLeaseHandle", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface InputLeaseHandle {\\n    readonly epoch: number;\\n    readonly enforced: boolean;\\n    release(): void;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "InputLeaseRequest", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface InputLeaseRequest {\\n    readonly ownerToken: object;\\n    readonly actions: readonly StandardModeAction[];\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "InputMap", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type InputMap = Record<string, VerbBinding>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "InteractionMode", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface InteractionMode<R = unknown> {\\n    readonly id: string;\\n    readonly suppress: Suppression;\\n    readonly camera?: CameraIntent;\\n    readonly input?: InputMap;\\n    readonly updateWhileCovered?: boolean;\\n    enter(ctx: ModeContext<R>): void | Promise<void>;\\n    exit(ctx: ModeContext<R>): void | Promise<void>;\\n    update?(dtSeconds: number, ctx: ModeContext<R>): void;\\n    onCovered?(ctx: ModeContext<R>): void;\\n    onRevealed?(ctx: ModeContext<R>): void;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "intersectCameraCapability", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function intersectCameraCapability(runtime: HelixCameraCapability, shell: HelixCameraCapability): HelixCameraCapability {\\n    const runtimeRefuses = CAMERA_CAPABILITY_FLAGS.some((flag) => !runtime[flag]);\\n    const shellRefuses = CAMERA_CAPABILITY_FLAGS.some((flag) => runtime[flag] && !shell[flag]);\\n    const reason = runtimeRefuses\\n        ? runtime.unavailableReason ?? (shellRefuses ? shell.unavailableReason : undefined)\\n        : shellRefuses\\n            ? shell.unavailableReason\\n            : undefined;\\n    return {\\n        photo: runtime.photo && shell.photo,\\n        video: runtime.video && shell.video,\\n        drone: runtime.drone && shell.drone,\\n        twoHandPose: runtime.twoHandPose && shell.twoHandPose,\\n        focusPoint: runtime.focusPoint && shell.focusPoint,\\n        exposureBias: runtime.exposureBias && shell.exposureBias,\\n        worldAudio: runtime.worldAudio && shell.worldAudio,\\n        ...(reason !== undefined ? { unavailableReason: reason } : {}),\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "InventoryItem", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type InventoryItem = {\\n    id?: string;\\n    itemId: string;\\n    title: string;\\n    kind?: string;\\n    category?: string;\\n    subCategory?: string | null;\\n    quantity: number;\\n    description?: string | null;\\n    thumbnailUrl?: string | null;\\n    equipped?: boolean;\\n    avatarSlot?: string | null;\\n    socket?: string | null;\\n    metadata?: Record<string, unknown>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "isCameraControlTarget", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const isCameraControlTarget = (v: unknown): v is CameraControlTarget => isMember(CAMERA_CONTROL_TARGETS, v);\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "isCameraDroneLockMode", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const isCameraDroneLockMode = (v: unknown): v is CameraDroneLockMode => isMember(CAMERA_DRONE_LOCK_MODES, v);\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "isCameraFilterId", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const isCameraFilterId = (v: unknown): v is CameraFilterId => isMember(CAMERA_FILTER_IDS, v);\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "isCameraMediaMode", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const isCameraMediaMode = (v: unknown): v is CameraMediaMode => isMember(CAMERA_MEDIA_MODES, v);\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "isCameraSessionState", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const isCameraSessionState = (v: unknown): v is CameraSessionState => isMember(CAMERA_SESSION_STATES, v);\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "isCameraSpatialMode", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const isCameraSpatialMode = (v: unknown): v is CameraSpatialMode => isMember(CAMERA_SPATIAL_MODES, v);\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "isCameraTimerSeconds", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const isCameraTimerSeconds = (v: unknown): v is CameraTimerSeconds => isMember(CAMERA_TIMER_SECONDS, v);\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "isFinalRestBatch", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export function isFinalRestBatch(m: EntityStateBatchMessage): boolean {\\n    if (!isFinalRestClaim(m.finalRest) || !finalRestId(m.finalRest.transactionId) ||\\n        m.moduleId !== m.finalRest.scope?.moduleId || !finalRestSequence(m.seq) || !Number.isFinite(m.tMs) ||\\n        !Array.isArray(m.states) || m.states.length === 0)\\n        return false;\\n    return m.states.every(s => finalRestId(s.e) && Number.isSafeInteger(s.ep) && (s.ep as number) >= 0 &&\\n        s.transactionId === m.finalRest!.transactionId &&\\n        [s.p, s.lv, s.av].every(v => Array.isArray(v) && v.length === 3 && v.every(Number.isFinite)) &&\\n        s.lv!.every(v => v === 0) && s.av!.every(v => v === 0) &&\\n        Array.isArray(s.q) && s.q.length === 4 && s.q.every(Number.isFinite) && Math.hypot(...s.q) > 1e-6 &&\\n        s.v === undefined);\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "isFinalRestClaim", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export function isFinalRestClaim(v: unknown): v is {\\n    version: 1;\\n    requestId: number;\\n    group: string;\\n    scope?: FinalRestProvenance;\\n} {\\n    if (!v || typeof v !== 'object')\\n        return false;\\n    const m = v as Record<string, unknown>;\\n    return m.version === 1 && finalRestSequence(m.requestId) && finalRestId(m.group) && validFinalRestScope(m.scope);\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "ItemEditionMode", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type ItemEditionMode = 'standard' | 'collectible';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "JoinRoomOptions", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface JoinRoomOptions {\\n    apiBaseUrl?: string;\\n    uploadHz?: number;\\n    reservationPath?: string;\\n    roomType?: string;\\n    ticket?: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer.ts\"\n  }\n]" },
  { "JoinVoiceOptions", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface JoinVoiceOptions {\\n    roomId?: string;\\n    apiBaseUrl?: string;\\n    tokenPath?: string;\\n    pttKey?: string;\\n    channel?: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/voice.ts\"\n  }\n]" },
  { "LeaderboardEntry", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type LeaderboardEntry = {\\n    subject: string;\\n    displayName: string;\\n    score: number;\\n    source: string;\\n    updatedAt: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "LeaderboardOrder", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type LeaderboardOrder = 'desc' | 'asc';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "LeaderboardPage", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type LeaderboardPage = {\\n    entries: LeaderboardEntry[];\\n    truncated: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "LeaderboardSubmitOptions", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type LeaderboardSubmitOptions = {\\n    order?: LeaderboardOrder;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "LeaderboardSubmitResult", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type LeaderboardSubmitResult = {\\n    best: number | null;\\n    updated: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "LeaderboardTopOptions", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type LeaderboardTopOptions = {\\n    limit?: number;\\n    order?: LeaderboardOrder;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "ListenAdmissionResult", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ListenAdmissionResult = {\\n    admitted: boolean;\\n    seatId?: string;\\n    joinerUserId?: string;\\n    reason?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/index.ts\"\n  }\n]" },
  { "ListenCloseResult", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ListenCloseResult = {\\n    closed: boolean;\\n    releasedSeatIds: string[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/index.ts\"\n  }\n]" },
  { "ListenHeartbeatResult", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ListenHeartbeatResult = {\\n    status: 'open' | 'closed';\\n    expiresAt: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/index.ts\"\n  }\n]" },
  { "ListenReleaseResult", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ListenReleaseResult = {\\n    released: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/index.ts\"\n  }\n]" },
  { "MarketplaceListing", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type MarketplaceListing = {\\n    listingId?: string;\\n    itemId: string;\\n    title: string;\\n    description?: string | null;\\n    priceLix: number;\\n    isFree: boolean;\\n    thumbnailUrl?: string | null;\\n    kind?: string;\\n    category?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "MarketplaceQuery", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type MarketplaceQuery = {\\n    kind?: string;\\n    category?: string;\\n    search?: string;\\n    limit?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "MatchFound", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type MatchFound = {\\n    ticketId: string;\\n    instanceId: string;\\n    roomType: string;\\n    expiresAt: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "MAX_MESSAGE_BYTES", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const MAX_MESSAGE_BYTES = 12288;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "MESSAGE_RATE", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const MESSAGE_RATE = {\\n    stateHz: 10,\\n    abilityHz: 20,\\n    actionHz: 20,\\n    gestureHz: 5,\\n    attachmentsHz: 4,\\n    purchaseReceiptHz: 2,\\n    avatarRefreshHz: 1,\\n    emoteRefreshHz: 1,\\n    emoteJoinHz: 2,\\n    entityStateHz: 10,\\n    pingHz: 4,\\n    maxUploadHz: 20,\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ModeCapability", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ModeCapability = 'locomotion' | 'cameraControl' | 'defaultHud' | 'interaction';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "ModeContext", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ModeContext<R = unknown> {\\n    readonly params: Record<string, unknown>;\\n    readonly live: boolean;\\n    readonly covered: boolean;\\n    readonly aborted: boolean;\\n    setCamera(intent: CameraIntent | null): void;\\n    setInput(input: InputMap | null): void;\\n    onVerb(verb: string | typeof ANY_VERB, handler: VerbHandler): () => void;\\n    isVerbActive(verb: string): boolean;\\n    emit(event: string, payload?: unknown): void;\\n    release(result?: R): void;\\n    diag(patch: Record<string, unknown>): void;\\n    clearDiag(...keys: string[]): void;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "ModeEndReason", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ModeEndReason = 'released' | 'popped' | 'cleared' | 'error';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "ModeHost", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ModeHost {\\n    setSuppression(effective: Required<Suppression>): void;\\n    applyCamera(intent: CameraIntent | null): void;\\n    setVerbs(input: InputMap | null, dispatch: VerbSink | null): void;\\n    reportDiag(modeId: string, patch: Record<string, unknown>): void;\\n    onModeEvent?(modeId: string, event: string, payload: unknown): void;\\n    onError?(error: unknown, modeId: string, phase: ModePhase): void;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "ModePhase", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type ModePhase = 'enter' | 'exit' | 'update' | 'verb' | 'covered' | 'revealed';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "ModeResult", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ModeResult<R = unknown> {\\n    value?: R;\\n    reason: ModeEndReason;\\n    aborted: boolean;\\n    error?: unknown;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "ModeStack", "value_and_type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export class ModeStack {\\n    readonly #host: ModeHost;\\n    readonly #frames: Frame[] = [];\\n    readonly #sink: VerbSink = (verb, event) => this.dispatchVerb(verb, event);\\n    #disposed = false;\\n    #clearPromise: Promise<void> | null = null;\\n    constructor(host: ModeHost) {\\n        this.#host = host;\\n    }\\n    get active(): InteractionMode | null {\\n        return this.#frames.at(-1)?.mode ?? null;\\n    }\\n    get depth(): number {\\n        return this.#frames.length;\\n    }\\n    get busy(): boolean {\\n        return this.#frames.some((frame) => frame.leaving);\\n    }\\n    has(id: string): boolean {\\n        return this.#frames.some((frame) => frame.mode.id === id);\\n    }\\n    async push<R = unknown>(mode: InteractionMode<R>, params: Record<string, unknown> = {}, options: PushOptions<R> = {}): Promise<PushOutcome<R>> {\\n        if (this.#disposed)\\n            return rejected<R>(new Error('mode stack is disposed'));\\n        if (this.#clearPromise)\\n            return rejected<R>(new Error('mode stack is clearing'));\\n        if (this.has(mode.id))\\n            return this.#reject<R>(new Error(`mode '${mode.id}' is already on the stack`), mode.id);\\n        const owner = OWNERS.get(mode as unknown as InteractionMode<never>);\\n        if (owner && owner !== this) {\\n            return this.#reject<R>(new Error(`mode '${mode.id}' is already live on another stack`), mode.id);\\n        }\\n        const clash = this.#exclusiveClash(mode as InteractionMode<unknown>);\\n        if (clash) {\\n            return this.#reject<R>(new Error(`mode '${mode.id}' claims '${clash.cap}' already held by '${clash.byId}'`), mode.id);\\n        }\\n        if (mode.input) {\\n            const errors = validateInputMap(mode.input, mode.suppress);\\n            if (errors.length) {\\n                return this.#reject<R>(new Error(`mode '${mode.id}' has an invalid input map: ${errors.join('; ')}`), mode.id);\\n            }\\n        }\\n        else if (mode.suppress.locomotion || mode.suppress.cameraControl) {\\n            return this.#reject<R>(new Error(`mode '${mode.id}' suppresses locomotion or cameraControl without a cancel action`), mode.id);\\n        }\\n        const frame = this.#makeFrame(mode as InteractionMode<unknown>, params, options as PushOptions<unknown>);\\n        OWNERS.set(mode as unknown as InteractionMode<never>, this);\\n        const below = this.#frames.at(-1);\\n        this.#frames.push(frame);\\n        if (below)\\n            this.#cover(below);\\n        this.#applySuppression();\\n        this.#applyTop();\\n        try {\\n            await mode.enter(frame.ctx as ModeContext<R>);\\n            if (frame.settled) {\\n                await frame.done;\\n                return { ok: false, error: new Error(`mode '${mode.id}' left while entering`), done: frame.done as Promise<ModeResult<R>> };\\n            }\\n            frame.entered = true;\\n            this.#applyTop();\\n            return { ok: true, done: frame.done as Promise<ModeResult<R>> };\\n        }\\n        catch (error) {\\n            this.#fail(error, mode.id, 'enter');\\n            await this.#popFrame(frame, true, 'error', error);\\n            return { ok: false, error, done: frame.done as Promise<ModeResult<R>> };\\n        }\\n    }\\n    async pop(id?: string, aborted = false): Promise<boolean> {\\n        const frame = id === undefined\\n            ? this.#frames.at(-1)\\n            : [...this.#frames].reverse().find((candidate) => candidate.mode.id === id);\\n        if (!frame)\\n            return false;\\n        return this.#popFrame(frame, aborted, aborted ? 'cleared' : 'popped');\\n    }\\n    clear(aborted = true): Promise<void> {\\n        if (this.#clearPromise)\\n            return this.#clearPromise;\\n        this.#clearPromise = this.#clearFrames(aborted).finally(() => {\\n            this.#clearPromise = null;\\n        });\\n        return this.#clearPromise;\\n    }\\n    update(dtSeconds: number): void {\\n        if (this.#disposed)\\n            return;\\n        const top = this.#frames.at(-1);\\n        for (const frame of ["
    "...this.#frames]) {\\n            if (frame.leaving || !frame.entered || !frame.mode.update)\\n                continue;\\n            if (frame !== top && !frame.mode.updateWhileCovered)\\n                continue;\\n            try {\\n                frame.mode.update(dtSeconds, frame.ctx);\\n            }\\n            catch (error) {\\n                this.#failAndPop(frame, error, 'update');\\n            }\\n        }\\n    }\\n    dispatchVerb(verb: string, event: VerbEvent): boolean {\\n        if (this.#disposed)\\n            return false;\\n        const frame = this.#frames.at(-1);\\n        if (!frame || frame.leaving || !frame.entered)\\n            return false;\\n        const binding = frame.input?.[verb];\\n        if (!binding) {\\n            this.#fail(new Error(`mode '${frame.mode.id}' received undeclared verb '${verb}'`), frame.mode.id, 'verb');\\n            return false;\\n        }\\n        if (binding.disabled)\\n            return false;\\n        if (event.phase === 'start')\\n            frame.activeVerbs.add(verb);\\n        if (event.phase === 'end')\\n            frame.activeVerbs.delete(verb);\\n        this.#invoke(frame, verb, event);\\n        return true;\\n    }\\n    async dispose(): Promise<void> {\\n        if (this.#disposed)\\n            return this.#clearPromise ?? Promise.resolve();\\n        this.#disposed = true;\\n        await this.clear(true);\\n    }\\n    async #clearFrames(aborted: boolean): Promise<void> {\\n        for (const frame of this.#frames)\\n            frame.leaving = true;\\n        this.#applyTop();\\n        while (this.#frames.length) {\\n            const frame = this.#frames.at(-1)!;\\n            if (frame.settled) {\\n                await frame.done;\\n            }\\n            else {\\n                await this.#popFrame(frame, aborted, 'cleared');\\n            }\\n        }\\n    }\\n    #reject<R>(error: unknown, modeId: string): PushOutcome<R> {\\n        this.#fail(error, modeId, 'enter');\\n        return rejected<R>(error);\\n    }\\n    #exclusiveClash(mode: InteractionMode<unknown>): {\\n        cap: ModeCapability;\\n        byId: string;\\n    } | null {\\n        for (const cap of EXCLUSIVE) {\\n            if (!mode.suppress[cap])\\n                continue;\\n            const holder = this.#frames.find((frame) => frame.mode.suppress[cap]);\\n            if (holder)\\n                return { cap, byId: holder.mode.id };\\n        }\\n        return null;\\n    }\\n    #applySuppression(): void {\\n        const effective: Required<Suppression> = {\\n            locomotion: false,\\n            cameraControl: false,\\n            defaultHud: false,\\n            interaction: false,\\n        };\\n        for (const frame of this.#frames) {\\n            for (const capability of Object.keys(effective) as ModeCapability[]) {\\n                if (frame.mode.suppress[capability])\\n                    effective[capability] = true;\\n            }\\n        }\\n        this.#host.setSuppression(effective);\\n    }\\n    #applyTop(): void {\\n        const top = this.#frames.at(-1);\\n        const usable = top?.entered && !top.leaving ? top : null;\\n        if (!top || usable)\\n            this.#host.applyCamera(usable?.camera ?? null);\\n        this.#host.setVerbs(usable?.input ?? null, usable?.input ? this.#sink : null);\\n    }\\n    #cover(frame: Frame): void {\\n        if (frame.covered)\\n            return;\\n        frame.covered = true;\\n        this.#endHeldVerbs(frame);\\n        if (!frame.mode.onCovered)\\n            return;\\n        try {\\n            frame.mode.onCovered(frame.ctx);\\n        }\\n        catch (error) {\\n            this.#failAndPop(frame, error, 'covered');\\n        }\\n    }\\n    #reveal(frame: Frame): void {\\n        if (!frame.covered)\\n            return;\\n        frame.covered = false;\\n        if (!frame.mode.onRevealed)\\n            return;\\n        try {\\n            frame.mode.onRevealed(frame.ctx);\\n        }\\n        catch (error) {\\n            this.#failAndPop(frame, error, 'revealed');\\n        }\\n    }\\n    #endHeldVerbs(frame: Frame): void {\\n        const held = [...frame.ac"
    "tiveVerbs];\\n        frame.activeVerbs.clear();\\n        for (const verb of held) {\\n            this.#invoke(frame, verb, { phase: 'end', value: 0, source: 'script' });\\n        }\\n    }\\n    #invoke(frame: Frame, verb: string, event: VerbEvent): void {\\n        const targets = [frame.handlers.get(verb), frame.handlers.get(ANY_VERB)];\\n        for (const handlers of targets) {\\n            if (!handlers)\\n                continue;\\n            for (const handler of [...handlers]) {\\n                try {\\n                    handler(event, verb);\\n                }\\n                catch (error) {\\n                    handlers.delete(handler);\\n                    this.#failAndPop(frame, error, 'verb');\\n                    return;\\n                }\\n            }\\n        }\\n    }\\n    #failAndPop(frame: Frame, error: unknown, phase: ModePhase): void {\\n        if (frame.leaving || frame.settled)\\n            return;\\n        this.#fail(error, frame.mode.id, phase);\\n        void this.#popFrame(frame, true, 'error', error);\\n    }\\n    async #popFrame(frame: Frame, aborted: boolean, reason: ModeEndReason, error?: unknown): Promise<boolean> {\\n        if (!this.#frames.includes(frame) || frame.settled)\\n            return false;\\n        frame.settled = true;\\n        frame.leaving = true;\\n        frame.aborted = aborted;\\n        this.#endHeldVerbs(frame);\\n        this.#applyTop();\\n        let endReason = reason;\\n        let failure = error;\\n        try {\\n            await frame.mode.exit(frame.ctx);\\n        }\\n        catch (exitError) {\\n            this.#fail(exitError, frame.mode.id, 'exit');\\n            if (failure === undefined)\\n                failure = exitError;\\n            endReason = 'error';\\n        }\\n        const at = this.#frames.indexOf(frame);\\n        if (at >= 0)\\n            this.#frames.splice(at, 1);\\n        OWNERS.delete(frame.mode as unknown as InteractionMode<never>);\\n        frame.handlers.clear();\\n        frame.activeVerbs.clear();\\n        this.#host.reportDiag(frame.mode.id, { active: false });\\n        this.#applySuppression();\\n        this.#applyTop();\\n        const next = this.#frames.at(-1);\\n        if (next && !next.leaving)\\n            this.#reveal(next);\\n        const result: ModeResult<unknown> = {\\n            reason: endReason,\\n            aborted,\\n            ...(frame.result ? { value: frame.result.value } : {}),\\n            ...(failure !== undefined ? { error: failure } : {}),\\n        };\\n        frame.settle(result);\\n        try {\\n            frame.options.onResult?.(result);\\n        }\\n        catch (callbackError) {\\n            this.#fail(callbackError, frame.mode.id, 'exit');\\n        }\\n        return true;\\n    }\\n    #makeFrame(mode: InteractionMode<unknown>, params: Record<string, unknown>, options: PushOptions<unknown>): Frame {\\n        let settle: (result: ModeResult<unknown>) => void = () => undefined;\\n        const done = new Promise<ModeResult<unknown>>((resolve) => {\\n            settle = resolve;\\n        });\\n        const frame: Frame = {\\n            mode,\\n            params,\\n            diagState: {},\\n            camera: mode.camera ?? null,\\n            input: mode.input ?? null,\\n            handlers: new Map(),\\n            activeVerbs: new Set(),\\n            entered: false,\\n            leaving: false,\\n            settled: false,\\n            aborted: false,\\n            covered: false,\\n            result: null,\\n            options,\\n            settle,\\n            done,\\n            ctx: null as unknown as ModeContext<unknown>,\\n        };\\n        frame.ctx = this.#makeContext(frame);\\n        return frame;\\n    }\\n    #makeContext(frame: Frame): ModeContext<unknown> {\\n        const stack = this;\\n        return {\\n            params: frame.params,\\n            get live() {\\n                return stack.#frames.includes(frame);\\n            },\\n            get covered() {\\n                return frame.covered;\\n            },\\n            get aborted() {\\n                return frame.aborted;\\n            },\\n    "
    "        setCamera(intent: CameraIntent | null): void {\\n                frame.camera = intent;\\n                if (stack.#frames.at(-1) === frame && frame.entered && !frame.leaving) {\\n                    stack.#host.applyCamera(frame.camera);\\n                }\\n            },\\n            setInput(input: InputMap | null): void {\\n                if (input) {\\n                    const errors = validateInputMap(input, frame.mode.suppress);\\n                    if (errors.length) {\\n                        const error = new Error(`setInput rejected for '${frame.mode.id}': ${errors.join('; ')}`);\\n                        stack.#failAndPop(frame, error, 'verb');\\n                        return;\\n                    }\\n                }\\n                else if (frame.mode.suppress.locomotion || frame.mode.suppress.cameraControl) {\\n                    const error = new Error(`setInput rejected for '${frame.mode.id}': exclusive suppression requires cancel`);\\n                    stack.#failAndPop(frame, error, 'verb');\\n                    return;\\n                }\\n                for (const verb of [...frame.activeVerbs]) {\\n                    if (!input?.[verb]) {\\n                        frame.activeVerbs.delete(verb);\\n                        stack.#invoke(frame, verb, { phase: 'end', value: 0, source: 'script' });\\n                    }\\n                }\\n                frame.input = input;\\n                if (stack.#frames.at(-1) === frame && frame.entered && !frame.leaving) {\\n                    stack.#host.setVerbs(frame.input, frame.input ? stack.#sink : null);\\n                }\\n            },\\n            onVerb(verb: string, handler: VerbHandler): () => void {\\n                const handlers = frame.handlers.get(verb) ?? new Set<VerbHandler>();\\n                frame.handlers.set(verb, handlers);\\n                handlers.add(handler);\\n                return () => handlers.delete(handler);\\n            },\\n            isVerbActive(verb: string): boolean {\\n                return frame.activeVerbs.has(verb);\\n            },\\n            emit(event: string, payload?: unknown): void {\\n                try {\\n                    frame.options.onEvent?.(event, payload);\\n                    stack.#host.onModeEvent?.(frame.mode.id, event, payload);\\n                }\\n                catch (callbackError) {\\n                    stack.#failAndPop(frame, callbackError, 'update');\\n                }\\n            },\\n            release(value?: unknown): void {\\n                frame.result = { value };\\n                if (!stack.#frames.includes(frame) || frame.leaving)\\n                    return;\\n                void stack.#popFrame(frame, false, 'released');\\n            },\\n            diag(patch: Record<string, unknown>): void {\\n                for (const [key, value] of Object.entries(patch)) {\\n                    if (value === undefined)\\n                        delete frame.diagState[key];\\n                    else\\n                        frame.diagState[key] = value;\\n                }\\n                stack.#host.reportDiag(frame.mode.id, {\\n                    active: stack.#frames.includes(frame),\\n                    ...frame.diagState,\\n                });\\n            },\\n            clearDiag(...keys: string[]): void {\\n                if (keys.length) {\\n                    for (const key of keys)\\n                        delete frame.diagState[key];\\n                }\\n                else {\\n                    for (const key of Object.keys(frame.diagState))\\n                        delete frame.diagState[key];\\n                }\\n                stack.#host.reportDiag(frame.mode.id, {\\n                    active: stack.#frames.includes(frame),\\n                    ...frame.diagState,\\n                });\\n            },\\n        };\\n    }\\n    #fail(error: unknown, modeId: string, phase: ModePhase): void {\\n        this.#host.onError?.(error, modeId, phase);\\n        this.#host.reportDiag(modeId, { error: String(error), phase });\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\":"
    " \"src/interaction-mode.ts\"\n  }\n]" },
  { "MODULE_FINAL_REST_SNAPSHOT", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const MODULE_FINAL_REST_SNAPSHOT = '__helix:moduleFinalRestSnapshot';\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "ModuleAccessors", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ModuleAccessors {\\n    readonly moduleId: string;\\n    vars: VarsView;\\n    me: VarsView;\\n    player(id: string): VarsView;\\n    entity(id: string): VarsView;\\n    phase(): string;\\n    timerDeadline(name: string, key?: string): number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-accessors.ts\"\n  }\n]" },
  { "ModuleActionRequest", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ModuleActionRequest {\\n    identity: ModuleIdentity;\\n    action: string;\\n    args?: Record<string, string | number | boolean>;\\n    engagement?: 'acquire' | 'release';\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "ModuleEffect", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ModuleEffect {\\n    moduleId: string;\\n    commandId: string;\\n    index: number;\\n    serverTick: number;\\n    event: string;\\n    payload: Readonly<Record<string, unknown>>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "ModuleEffectMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ModuleEffectMessage {\\n    moduleId: string;\\n    commandId: string;\\n    index: number;\\n    serverTick: number;\\n    event: string;\\n    payload: Record<string, RoomVarValue>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ModuleEngagementMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ModuleEngagementMessage {\\n    moduleId: string;\\n    action: string;\\n    status: ModuleEngagementStatus;\\n    requestId?: number;\\n    epoch?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ModuleEngagementStatus", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type ModuleEngagementStatus = 'granted' | 'denied' | 'released' | 'revoked';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ModuleFusedMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ModuleFusedMessage {\\n    moduleId: string;\\n    serverTick: number;\\n    tickNodes: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ModuleIdentity", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ModuleIdentity {\\n    itemInstanceId?: string;\\n    moduleId: string;\\n    bundleChecksumSha256: string;\\n    revision: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "ModuleSleepMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ModuleSleepMessage {\\n    moduleId: string;\\n    serverTick: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ModuleState", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ModuleState {\\n    roomVars: RoomVars;\\n    players: Record<string, {\\n        vars: RoomVars;\\n    }>;\\n    entities: Record<string, EntityState>;\\n    phase: string;\\n    phaseStartTick: number;\\n    timerDeadlines: Record<string, number>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/room.ts\"\n  }\n]" },
  { "ModuleStateSnapshot", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface ModuleStateSnapshot {\\n    moduleId: string;\\n    revision: number;\\n    phase: string;\\n    serverTick: number;\\n    roomVars: Readonly<Record<string, unknown>>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "ModuleWakeMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ModuleWakeMessage {\\n    moduleId: string;\\n    reason: ModuleWakeReason;\\n    serverTick: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ModuleWakeReason", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type ModuleWakeReason = 'always-on' | 'proximity' | 'engagement' | 'action' | 'import' | 'module' | 'external';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "MOVEMENT_GATE", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const MOVEMENT_GATE = {\\n    toleranceMul: 1.25,\\n    ownerEntityToleranceMul: 3.0,\\n    maxCatchupMs: 300,\\n    impulseMul: 6,\\n    graceMs: 250,\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "nearestLensPreset", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function nearestLensPreset(zoom: number): CameraLensPreset {\\n    const clamped = clampCameraZoom(zoom);\\n    let best: CameraLensPreset = CAMERA_LENS_PRESETS[0];\\n    let bestDistance = Number.POSITIVE_INFINITY;\\n    for (const preset of CAMERA_LENS_PRESETS) {\\n        const distance = Math.abs(preset - clamped);\\n        if (distance < bestDistance) {\\n            best = preset;\\n            bestDistance = distance;\\n        }\\n    }\\n    return best;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "normaliseTouch", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function normaliseTouch(touch: TouchPresentation): TouchPresentation {\\n    return touch;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "normalizeCameraCapability", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function normalizeCameraCapability(raw: unknown): HelixCameraCapability | null {\\n    if (!isRecord(raw))\\n        return null;\\n    const flags = [\\n        'photo',\\n        'video',\\n        'drone',\\n        'twoHandPose',\\n        'focusPoint',\\n        'exposureBias',\\n        'worldAudio',\\n    ] as const;\\n    for (const flag of flags)\\n        if (typeof raw[flag] !== 'boolean')\\n            return null;\\n    if (raw.unavailableReason !== undefined && typeof raw.unavailableReason !== 'string') {\\n        return null;\\n    }\\n    return {\\n        photo: raw.photo as boolean,\\n        video: raw.video as boolean,\\n        drone: raw.drone as boolean,\\n        twoHandPose: raw.twoHandPose as boolean,\\n        focusPoint: raw.focusPoint as boolean,\\n        exposureBias: raw.exposureBias as boolean,\\n        worldAudio: raw.worldAudio as boolean,\\n        ...(raw.unavailableReason !== undefined\\n            ? { unavailableReason: raw.unavailableReason as string }\\n            : {}),\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "normalizeCameraState", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function normalizeCameraState(raw: unknown): HelixCameraState | null {\\n    if (!isRecord(raw))\\n        return null;\\n    if (!isCameraSessionState(raw.session) ||\\n        !isCameraMediaMode(raw.media) ||\\n        !isCameraSpatialMode(raw.spatial) ||\\n        !isCameraControlTarget(raw.controlTarget) ||\\n        !isCameraFilterId(raw.filter) ||\\n        !isCameraTimerSeconds(raw.timerSeconds)) {\\n        return null;\\n    }\\n    if (!finite(raw.zoom) || raw.zoom < CAMERA_MIN_ZOOM || raw.zoom > CAMERA_MAX_ZOOM)\\n        return null;\\n    const aim = normalizeAim(raw.aim);\\n    const shutter = normalizeShutter(raw.shutter);\\n    const capability = normalizeCameraCapability(raw.capability);\\n    if (!aim || !shutter || !capability)\\n        return null;\\n    let focusPoint: CameraFocusPoint | undefined;\\n    if (raw.focusPoint !== undefined) {\\n        const parsed = normalizeFocusPoint(raw.focusPoint);\\n        if (!parsed)\\n            return null;\\n        focusPoint = parsed;\\n    }\\n    if (raw.exposureBias !== undefined && !finite(raw.exposureBias))\\n        return null;\\n    let drone: HelixCameraDroneState | undefined;\\n    if (raw.drone !== undefined) {\\n        const parsed = normalizeDroneState(raw.drone);\\n        if (!parsed)\\n            return null;\\n        drone = parsed;\\n    }\\n    if (raw.session === 'drone' && !drone)\\n        return null;\\n    return {\\n        session: raw.session,\\n        media: raw.media,\\n        spatial: raw.spatial,\\n        controlTarget: raw.controlTarget,\\n        lens: nearestLensPreset(raw.zoom),\\n        zoom: raw.zoom,\\n        filter: raw.filter,\\n        timerSeconds: raw.timerSeconds,\\n        aim,\\n        shutter,\\n        capability,\\n        ...(focusPoint ? { focusPoint } : {}),\\n        ...(raw.exposureBias !== undefined ? { exposureBias: raw.exposureBias } : {}),\\n        ...(drone ? { drone } : {}),\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "normalizeDeviceTrialSpawn", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function normalizeDeviceTrialSpawn(session: HelixSession | null, now: () => number = Date.now): DeviceTrialSpawn | null {\\n    const trial = session?.trial;\\n    const raw: unknown = trial?.spawnedItem;\\n    if (trial?.kind !== 'device' ||\\n        !record(raw) ||\\n        !UUID.test(trial.id) ||\\n        !UUID.test(trial.itemId) ||\\n        !Number.isSafeInteger(trial.expiresAt) ||\\n        now() >= trial.expiresAt * 1000 ||\\n        [...FORBIDDEN_FIELDS].some((field) => field in raw) ||\\n        raw.kind !== 'device' ||\\n        raw.placementId !== trial.id ||\\n        raw.itemId !== trial.itemId ||\\n        raw.expiresAt !== trial.expiresAt ||\\n        typeof raw.name !== 'string' ||\\n        raw.name.length === 0 ||\\n        raw.name.length > 256 ||\\n        !servableAssetUrl(raw.modelUrl) ||\\n        !validTransform(raw.transform) ||\\n        !record(raw.deviceDefinition) ||\\n        typeof raw.deviceDefinition.id !== 'string' ||\\n        raw.deviceDefinition.id.length === 0 ||\\n        typeof raw.deviceDefinition.version !== 'string' ||\\n        raw.deviceDefinition.version.length === 0 ||\\n        !record(raw.functionalPin) ||\\n        typeof raw.functionalPin.continuumPackageId !== 'string' ||\\n        !UUID.test(raw.functionalPin.continuumPackageId) ||\\n        typeof raw.functionalPin.continuumPackageVersion !== 'string' ||\\n        raw.functionalPin.continuumPackageVersion.length === 0 ||\\n        raw.functionalPin.continuumPackageVersion.length > 64 ||\\n        typeof raw.functionalPin.continuumManifestCid !== 'string' ||\\n        !CONTINUUM_CID.test(raw.functionalPin.continuumManifestCid) ||\\n        !record(raw.composition)) {\\n        return null;\\n    }\\n    const projection = normalizeSealedDeviceDefinitionProjection({\\n        definition: raw.definition,\\n        definitionChecksumSha256: raw.definitionChecksumSha256,\\n        expiresAtEpochSeconds: trial.expiresAt,\\n        pin: {\\n            packageId: raw.functionalPin.continuumPackageId,\\n            version: raw.functionalPin.continuumPackageVersion,\\n            manifestCid: raw.functionalPin.continuumManifestCid,\\n        },\\n    });\\n    if (projection === null ||\\n        projection.definition.id !== raw.deviceDefinition.id ||\\n        projection.definition.version !== raw.deviceDefinition.version) {\\n        return null;\\n    }\\n    try {\\n        const transform = raw.transform as {\\n            position: [\\n                number,\\n                number,\\n                number\\n            ];\\n            yawDeg: number;\\n            scale: number;\\n        };\\n        return deepFreeze({\\n            placementId: trial.id,\\n            itemId: trial.itemId,\\n            kind: 'device',\\n            name: raw.name,\\n            modelUrl: raw.modelUrl as string | null,\\n            transform: {\\n                position: [...transform.position] as [\\n                    number,\\n                    number,\\n                    number\\n                ],\\n                yawDeg: transform.yawDeg,\\n                scale: transform.scale,\\n            },\\n            expiresAt: trial.expiresAt,\\n            deviceDefinition: {\\n                id: projection.definition.id,\\n                version: projection.definition.version,\\n            },\\n            definition: projection.definition,\\n            definitionChecksumSha256: projection.definitionChecksumSha256,\\n            functionalPin: {\\n                continuumPackageId: projection.pin.packageId,\\n                continuumPackageVersion: projection.pin.version,\\n                continuumManifestCid: projection.pin.manifestCid,\\n            },\\n            composition: jsonSnapshot(raw.composition),\\n        });\\n    }\\n    catch {\\n        return null;\\n    }\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/device-trial.ts\"\n  }\n]" },
  { "normalizeRuntimeFidelityIntent", "value", "runtime_facade", "[\n  {\n    \"declaration\": \"export function normalizeRuntimeFidelityIntent(value: unknown): RuntimeFidelityIntent | null {\\n    if (!value || typeof value !== 'object')\\n        return null;\\n    const candidate = value as Record<string, unknown>;\\n    if (Object.keys(candidate).length !== 4 ||\\n        candidate.version !== RUNTIME_FIDELITY_VERSION ||\\n        !RUNTIME_FIDELITY_VISUAL_TIERS.includes(candidate.requestedVisualTier as RuntimeFidelityVisualTier) ||\\n        !(candidate.renderScaleOverride === null ||\\n            RUNTIME_FIDELITY_RENDER_SCALES.includes(candidate.renderScaleOverride as RuntimeFidelityRenderScale)) ||\\n        !(candidate.runtimeProfileQuality === null ||\\n            RUNTIME_PROFILE_QUALITIES.includes(candidate.runtimeProfileQuality as RuntimeProfileQuality))) {\\n        return null;\\n    }\\n    return {\\n        version: RUNTIME_FIDELITY_VERSION,\\n        requestedVisualTier: candidate.requestedVisualTier as RuntimeFidelityVisualTier,\\n        renderScaleOverride: candidate.renderScaleOverride as RuntimeFidelityRenderScale | null,\\n        runtimeProfileQuality: candidate.runtimeProfileQuality as RuntimeProfileQuality | null,\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "normalizeSealedDeviceDefinitionProjection", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function normalizeSealedDeviceDefinitionProjection(value: unknown): SealedDeviceDefinitionProjection | null {\\n    try {\\n        assertProjectionEnvelope(value as SealedDeviceDefinitionProjection);\\n        const projection = value as SealedDeviceDefinitionProjection;\\n        const canonical = canonicalJson(projection.definition);\\n        const definition = JSON.parse(canonical) as DeviceDefinitionV1;\\n        if (definition.format !== 'helix.device' ||\\n            definition.formatVersion !== 1 ||\\n            typeof definition.id !== 'string' ||\\n            definition.id.length === 0 ||\\n            typeof definition.version !== 'string' ||\\n            definition.version.length === 0) {\\n            return null;\\n        }\\n        return deepFreeze({\\n            definition,\\n            definitionChecksumSha256: projection.definitionChecksumSha256.toLowerCase(),\\n            expiresAtEpochSeconds: projection.expiresAtEpochSeconds,\\n            pin: {\\n                packageId: projection.pin.packageId,\\n                version: projection.pin.version,\\n                manifestCid: projection.pin.manifestCid,\\n            },\\n        });\\n    }\\n    catch {\\n        return null;\\n    }\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/device-definition-resolver.ts\"\n  }\n]" },
  { "PackageCustomizerContext", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export interface PackageCustomizerContext {\\n    readonly source: PackageCustomizerSource | null;\\n    readonly subject: PackageCustomizerSubject | null;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "PackageCustomizerSource", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PackageCustomizerSource = Readonly<{\\n    kind: 'trial';\\n    hostId: string;\\n    itemId: string;\\n}>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "PackageCustomizerSubject", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PackageCustomizerSubject = {\\n    readonly kind: 'package';\\n    readonly hostKind: string;\\n    readonly hostId: string;\\n    readonly packageId: string;\\n    readonly version: string;\\n    readonly renditions: readonly Readonly<{\\n        id: string;\\n        url: string;\\n    }>[];\\n    readonly board: Readonly<{\\n        id: string;\\n    }>;\\n    readonly assignments: Readonly<Record<string, string | null>>;\\n    readonly hiddenSlotIds?: readonly string[];\\n    readonly equipBoard: Readonly<Record<string, unknown>>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "Party", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type Party = {\\n    id: string;\\n    leaderId: string;\\n    maxSize: number;\\n    members: PartyMember[];\\n    code?: PartyCode;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "PartyCode", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PartyCode = {\\n    code: string;\\n    expiresAt: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "PartyInvite", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PartyInvite = {\\n    id: string;\\n    partyId: string;\\n    from: PartyMember;\\n    expiresAt: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "PartyInviteReceipt", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PartyInviteReceipt = {\\n    inviteId: string;\\n    expiresAt: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "PartyMember", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PartyMember = {\\n    userId: string;\\n    displayName: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "PartyState", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PartyState = {\\n    party: Party | null;\\n    invites: PartyInvite[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "PingMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface PingMessage {\\n    clientTimeMs: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "PlayerIdentity", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface PlayerIdentity {\\n    id: string;\\n    displayName: string;\\n    userId: string;\\n    avatarUrl: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/state.ts\"\n  }\n]" },
  { "PlayerReplicaState", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface PlayerReplicaState {\\n    position: Vec3;\\n    facingYawDeg: number;\\n    speed: number;\\n    moveDirectionDeg: number;\\n    verticalVelocity: number;\\n    grounded: boolean;\\n    crouched: boolean;\\n    ragdolled: boolean;\\n    ragdollLaunchX: number;\\n    ragdollLaunchZ: number;\\n    ragdollSpeedMps: number;\\n    aimYawDeg: number;\\n    aimPitchDeg: number;\\n    activeAbilities: string[];\\n    loopGesture: string;\\n    attachments: AttachmentEntry[];\\n    reachLeftActive: boolean;\\n    reachLeft: Vec3;\\n    reachRightActive: boolean;\\n    reachRight: Vec3;\\n    lookTargetActive: boolean;\\n    lookTarget: Vec3;\\n    shotSeq?: number;\\n    gunDrawn?: boolean;\\n    aiming?: boolean;\\n    reloading?: boolean;\\n    emotes?: EmoteEntry[];\\n    locomotionPack?: string;\\n    pairInitiator: string;\\n    pairSlot: string;\\n    pairStartMs: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/state.ts\"\n  }\n]" },
  { "PlayerState", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface PlayerState extends PlayerIdentity, PlayerReplicaState {\\n    vars: RoomVars;\\n    connected: boolean;\\n    active: boolean;\\n    posT: number;\\n    avatarRevision: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/room.ts\"\n  }\n]" },
  { "PongMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface PongMessage {\\n    finalRestVersion?: 1;\\n    moduleFinalRestVersion?: 1;\\n    finalRestModules?: Record<string, number>;\\n    clientTimeMs: number;\\n    serverTimeMs: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ProductGrant", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type ProductGrant = {\\n    kind: 'item';\\n    itemId: string;\\n    quantity?: number;\\n} | {\\n    kind: 'pass';\\n    passKey?: string;\\n    durationSeconds?: number;\\n} | {\\n    kind: 'currency';\\n    code: string;\\n    amount: number;\\n    display?: 'wallet' | 'uses';\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "PurchaseContext", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PurchaseContext = {\\n    ref: string;\\n    title: string;\\n    description: string | null;\\n    thumbnailUrl: string | null;\\n    priceLix: number;\\n    isFree: boolean;\\n    balanceLix: number;\\n    balanceAfterLix: number;\\n    owned: boolean;\\n    ownedCount: number;\\n    maxPerPlayer?: number | null;\\n    maxPerUser?: number | null;\\n    eligible: boolean;\\n    eligibilityStatus: PurchaseStatus | null;\\n    quantity?: number;\\n    unitPriceLix?: number;\\n    totalPriceLix?: number;\\n    editionMode?: ItemEditionMode;\\n    supply?: number | null;\\n    minted?: number | null;\\n    remaining?: number | null;\\n    serialNumber?: number | null;\\n    distributionId?: string | null;\\n    listingId?: string | null;\\n    creatorName?: string | null;\\n    sellerName?: string | null;\\n    maxClaims?: number | null;\\n    startsAt?: string | null;\\n    endsAt?: string | null;\\n    verificationLevel?: AccountVerificationLevel;\\n    requiredVerificationLevel?: AccountVerificationLevel | null;\\n    resaleEligibleAt?: string | null;\\n    holdUntil?: string | null;\\n    grants?: ProductGrant[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "PurchaseOptions", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PurchaseOptions = {\\n    quantity?: number;\\n    idempotencyKey?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "PurchaseReceiptMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface PurchaseReceiptMessage {\\n    receipt: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "PurchaseResult", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PurchaseResult = {\\n    status: PurchaseStatus;\\n    completed: boolean;\\n    reason?: string;\\n    itemId?: string | null;\\n    balanceAfterLix?: number;\\n    priceLix?: number;\\n    balanceLix?: number;\\n    shortfallLix?: number;\\n    ownedCount?: number;\\n    maxPerPlayer?: number | null;\\n    maxPerUser?: number | null;\\n    requestedQuantity?: number;\\n    fulfilledQuantity?: number;\\n    distributionId?: string | null;\\n    listingId?: string | null;\\n    inventoryInstanceIds?: string[];\\n    serialNumbers?: number[];\\n    resaleEligibleAt?: string | null;\\n    receipt?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "PurchaseStatus", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type PurchaseStatus = 'Pending' | 'Granted' | 'Claimed' | 'AlreadyOwned' | 'InsufficientFunds' | 'MaxPerUserReached' | 'ProductInactive' | 'ProductNotFound' | 'NotInWorld' | 'Unauthorized' | 'RateLimited' | 'Cancelled' | 'Failed' | 'Timeout' | 'NotFound' | 'PriceChanged';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "PushOptions", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface PushOptions<R = unknown> {\\n    onResult?(result: ModeResult<R>): void;\\n    onEvent?(event: string, payload: unknown): void;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "PushOutcome", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface PushOutcome<R = unknown> {\\n    ok: boolean;\\n    error?: unknown;\\n    done: Promise<ModeResult<R>>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "Quat", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type Quat = {\\n    x: number;\\n    y: number;\\n    z: number;\\n    w: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/state.ts\"\n  }\n]" },
  { "QueueEndReason", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type QueueEndReason = 'cancelled' | 'timeout' | 'heartbeat-lapsed' | 'member-absent' | 'party-changed' | 'build-changed' | 'queue-removed' | 'replaced' | 'ended' | 'heartbeat-lost' | 'match-expired' | 'refused' | 'session-changed' | 'left';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "QueueStatus", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type QueueStatus = {\\n    status: 'none' | 'waiting' | 'matched';\\n    queueId?: string;\\n    waiting?: QueueWaiting;\\n    match?: MatchFound;\\n    reason?: QueueEndReason;\\n    serverReason?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "QueueWaiting", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type QueueWaiting = {\\n    players: number;\\n    needed: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/matchmaking.ts\"\n  }\n]" },
  { "RECEIPT_LIMITS", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const RECEIPT_LIMITS = {\\n    maxReceiptLength: 4096,\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ReplicaInput", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type ReplicaInput = Omit<StateMessage, 'seq' | 'tMs' | 'teleportSeq'>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer.ts\"\n  }\n]" },
  { "RESERVED_MESSAGE_TYPES", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const RESERVED_MESSAGE_TYPES = ['state', 'ability', 'action', 'gesture', 'attachments', 'purchaseReceipt', 'avatarRefresh', 'emoteRefresh', 'emoteJoin', 'entityState', 'entityStateBatch', 'ping', 'pong', 'stateAck', 'entityStateAck', 'groupRestSnapshot', 'moduleFused', 'moduleWake', 'moduleSleep', 'moduleEngagement', 'moduleEffect'] as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ResolvedHelixMaterial", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type ResolvedHelixMaterial = HelixMaterialDefinition & {\\n    maps?: HelixMaterialMapPaths;\\n    resolutions?: Record<string, HelixMaterialResolutionVariant>;\\n    resolution?: {\\n        key: string;\\n        pixels: number | null;\\n        available: string[];\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/materials.ts\"\n  }\n]" },
  { "ROOM_CREDENTIAL_AUDIENCE", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const ROOM_CREDENTIAL_AUDIENCE = 'helix-instant-room' as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/credential.ts\"\n  }\n]" },
  { "RoomAccessors", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface RoomAccessors {\\n    vars: VarsView;\\n    me: VarsView;\\n    player(id: string): VarsView;\\n    phase(): string;\\n    currentTurn(): string;\\n    isMyTurn(): boolean;\\n    module(moduleId: string): ModuleAccessors;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-accessors.ts\"\n  }\n]" },
  { "RoomCredentialClaims", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface RoomCredentialClaims {\\n    sub: string;\\n    displayName: string;\\n    avatarUrl?: string | null;\\n    worldId: string;\\n    buildId: string;\\n    baseBuildId?: string;\\n    scopes: string[];\\n    maxPlayers: number;\\n    buildNumber: number;\\n    configUrl: string;\\n    trial?: RoomTrialClaim;\\n    roomType?: string;\\n    instanceKey?: string;\\n    roomInit?: Record<string, RoomInitValue>;\\n    playerInit?: Record<string, RoomInitValue>;\\n    aud: typeof ROOM_CREDENTIAL_AUDIENCE;\\n    iss: string;\\n    exp: number;\\n    iat: number;\\n    jti: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/credential.ts\"\n  }\n]" },
  { "RoomInitValue", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type RoomInitValue = number | boolean | string;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/credential.ts\"\n  }\n]" },
  { "RoomState", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface RoomState {\\n    players: Record<string, PlayerState>;\\n    roomVars: RoomVars;\\n    entities: Record<string, EntityState>;\\n    serverTick: number;\\n    serverTimeMs: number;\\n    phase: string;\\n    phaseStartTick: number;\\n    timerDeadlines: Record<string, number>;\\n    modules?: Record<string, ModuleState>;\\n    dynamicModules?: Record<string, DynamicModuleState>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/room.ts\"\n  }\n]" },
  { "RoomTicket", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface RoomTicket {\\n    roomType: string;\\n    ticketId: string;\\n    instanceId: string;\\n    expiresAt: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer.ts\"\n  }\n]" },
  { "RoomTicketMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface RoomTicketMessage {\\n    roomType: string;\\n    ticketId: string;\\n    instanceId: string;\\n    expiresAt: string | number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "RoomTrialClaim", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface RoomTrialClaim {\\n    id: string;\\n    itemId: string;\\n    kind: 'avatar' | 'vehicle';\\n    expiresAt: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/credential.ts\"\n  }\n]" },
  { "RoomVarCollection", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type RoomVarCollection = number[] | string[] | boolean[] | RoomVarRecord[] | Record<string, number>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/room.ts\"\n  }\n]" },
  { "RoomVarRecord", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type RoomVarRecord = Record<string, number | string | boolean | Vec3>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/room.ts\"\n  }\n]" },
  { "RoomVars", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type RoomVars = Record<string, RoomVarValue>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/room.ts\"\n  }\n]" },
  { "RoomVarValue", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type RoomVarValue = number | string | boolean | Vec3 | null | RoomVarCollection;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/room.ts\"\n  }\n]" },
  { "RUNTIME_FIDELITY_RENDER_SCALES", "value", "runtime_facade", "[\n  {\n    \"declaration\": \"const RUNTIME_FIDELITY_RENDER_SCALES = ['1.5', '1', '0.77', '0.59'] as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "RUNTIME_FIDELITY_VERSION", "value", "runtime_facade", "[\n  {\n    \"declaration\": \"const RUNTIME_FIDELITY_VERSION = 1 as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "RUNTIME_FIDELITY_VISUAL_TIERS", "value", "runtime_facade", "[\n  {\n    \"declaration\": \"const RUNTIME_FIDELITY_VISUAL_TIERS = [\\n    'auto',\\n    'minimal',\\n    'low',\\n    'medium',\\n    'high',\\n    'ultra',\\n] as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "RUNTIME_PROFILE_QUALITIES", "value", "runtime_facade", "[\n  {\n    \"declaration\": \"const RUNTIME_PROFILE_QUALITIES = ['minimum', 'balanced', 'high', 'ultra'] as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "RuntimeFidelityIntent", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type RuntimeFidelityIntent = {\\n    version: typeof RUNTIME_FIDELITY_VERSION;\\n    requestedVisualTier: RuntimeFidelityVisualTier;\\n    renderScaleOverride: RuntimeFidelityRenderScale | null;\\n    runtimeProfileQuality: RuntimeProfileQuality | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "RuntimeFidelityRenderScale", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type RuntimeFidelityRenderScale = (typeof RUNTIME_FIDELITY_RENDER_SCALES)[number];\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "RuntimeFidelityVisualTier", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type RuntimeFidelityVisualTier = (typeof RUNTIME_FIDELITY_VISUAL_TIERS)[number];\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "RuntimeProfileQuality", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type RuntimeProfileQuality = (typeof RUNTIME_PROFILE_QUALITIES)[number];\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "sameFinalRestScope", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const sameFinalRestScope = (a?: FinalRestProvenance, b?: FinalRestProvenance): boolean => a?.moduleId === b?.moduleId && a?.generation === b?.generation && a?.engagementEpoch === b?.engagementEpoch;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "SavedPhoto", "type", "runtime_facade", "[\n  {\n    \"declaration\": \"export type SavedPhoto = {\\n    assetId: string;\\n    url: string;\\n    thumbnailUrl: string;\\n    worldName: string;\\n    createdAt: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "SealedDeviceDefinitionPin", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface SealedDeviceDefinitionPin {\\n    packageId: string;\\n    version: string;\\n    manifestCid: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/device-definition-resolver.ts\"\n  }\n]" },
  { "SealedDeviceDefinitionProjection", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface SealedDeviceDefinitionProjection {\\n    definition: DeviceDefinitionV1;\\n    definitionChecksumSha256: string;\\n    expiresAtEpochSeconds: number;\\n    pin: SealedDeviceDefinitionPin;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/device-definition-resolver.ts\"\n  }\n]" },
  { "SealedDeviceDefinitionResolver", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface SealedDeviceDefinitionResolver extends WorldDeviceDefinitionResolver {\\n    dispose(): void;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/device-definition-resolver.ts\"\n  }\n]" },
  { "SealedDeviceDefinitionResolverOptions", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface SealedDeviceDefinitionResolverOptions {\\n    sha256?: (bytes: ArrayBuffer) => Promise<string>;\\n    now?: () => number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/device-definition-resolver.ts\"\n  }\n]" },
  { "ServerMessagePayloads", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface ServerMessagePayloads {\\n    [ServerMessageType.Pong]: PongMessage;\\n    [ServerMessageType.StateAck]: StateAckMessage;\\n    [ServerMessageType.EntityStateAck]: EntityStateAckMessage;\\n    [ServerMessageType.Gesture]: GestureEventMessage;\\n    [ServerMessageType.GroupRestSnapshot]: GroupRestSnapshotMessage;\\n    [ServerMessageType.ModuleFused]: ModuleFusedMessage;\\n    [ServerMessageType.ModuleWake]: ModuleWakeMessage;\\n    [ServerMessageType.ModuleSleep]: ModuleSleepMessage;\\n    [ServerMessageType.ModuleEngagement]: ModuleEngagementMessage;\\n    [ServerMessageType.ModuleEffect]: ModuleEffectMessage;\\n    [ServerMessageType.VehicleEntityRetired]: VehicleEntityRetiredMessage;\\n    [ServerMessageType.VehicleActionFences]: VehicleActionFencesMessage;\\n    [ServerMessageType.RoomTicket]: RoomTicketMessage;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "ServerMessageType", "value_and_type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const ServerMessageType = {\\n    Pong: 'pong',\\n    StateAck: 'stateAck',\\n    EntityStateAck: 'entityStateAck',\\n    Gesture: 'gesture',\\n    GroupRestSnapshot: 'groupRestSnapshot',\\n    ModuleFused: 'moduleFused',\\n    ModuleWake: 'moduleWake',\\n    ModuleSleep: 'moduleSleep',\\n    ModuleEngagement: 'moduleEngagement',\\n    ModuleEffect: 'moduleEffect',\\n    VehicleEntityRetired: '__helix:vehicleEntityRetired',\\n    VehicleActionFences: '__helix:vehicleActionFences',\\n    RoomTicket: 'helix:room-ticket',\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  },\n  {\n    \"declaration\": \"export type ServerMessageType = (typeof ServerMessageType)[keyof typeof ServerMessageType];\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "StandardModeAction", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type StandardModeAction = 'move' | 'look' | 'primary' | 'secondary' | 'tertiary' | 'cancel';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "StateAckMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface StateAckMessage {\\n    seq: number;\\n    position: Vec3;\\n    teleportSeq?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "StateMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface StateMessage {\\n    seq: number;\\n    position: Vec3;\\n    facingYawDeg: number;\\n    speed: number;\\n    moveDirectionDeg: number;\\n    verticalVelocity: number;\\n    grounded: boolean;\\n    crouched: boolean;\\n    ragdolled?: boolean;\\n    ragdollLaunchX?: number;\\n    ragdollLaunchZ?: number;\\n    ragdollSpeedMps?: number;\\n    aimYawDeg: number;\\n    aimPitchDeg: number;\\n    tMs?: number;\\n    teleportSeq?: number;\\n    reachLeft?: Vec3;\\n    reachRight?: Vec3;\\n    lookTarget?: Vec3;\\n    shotSeq?: number;\\n    gunDrawn?: boolean;\\n    aiming?: boolean;\\n    reloading?: boolean;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "Suppression", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface Suppression {\\n    locomotion?: boolean;\\n    cameraControl?: boolean;\\n    defaultHud?: boolean;\\n    interaction?: boolean;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "SwitchRoomOptions", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type SwitchRoomOptions = Omit<JoinRoomOptions, 'roomType' | 'ticket'>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer.ts\"\n  }\n]" },
  { "SwitchRoomTarget", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type SwitchRoomTarget = {\\n    ticket: string;\\n} | {\\n    roomType?: string;\\n    preferInstanceId?: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer.ts\"\n  }\n]" },
  { "TouchBinding", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type TouchBinding = TouchPresentation;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "TouchKind", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type TouchKind = TouchPresentationKind;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "TouchPresentation", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface TouchPresentation {\\n    kind: TouchPresentationKind;\\n    zone: TouchPresentationZone;\\n    group?: string;\\n    order?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "TouchPresentationKind", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type TouchPresentationKind = 'button' | 'drag' | 'tap' | 'hold' | 'stick' | 'none';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "TouchPresentationZone", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type TouchPresentationZone = 'surface' | 'primary' | 'secondary' | 'left' | 'right';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "UNITS", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"const UNITS = {\\n    position: 'meters',\\n    velocity: 'meters/second',\\n    angles: 'degrees',\\n} as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/multiplayer-contract/state.ts\"\n  }\n]" },
  { "UniversalActionSurface", "value_and_type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export class UniversalActionSurface {\\n    readonly element: HTMLElement;\\n    readonly #document: Document;\\n    readonly #hints: ActionSurfaceHintSource;\\n    readonly #onInvoke: (invocation: ActionSurfaceInvocation) => void;\\n    readonly #onDismiss?: (instanceId: string) => void;\\n    readonly #onOpenChange?: (open: boolean) => void;\\n    readonly #title: HTMLElement;\\n    readonly #status: HTMLElement;\\n    readonly #list: HTMLElement;\\n    readonly #hint: HTMLElement;\\n    readonly #unsubscribeHints: () => void;\\n    #snapshot: ActionSurfaceSnapshot | null = null;\\n    #actions: ActionSurfaceAction[] = [];\\n    #cursor = 0;\\n    #mode: SurfaceMode = { type: 'browse' };\\n    #lastPointer = { x: Number.NaN, y: Number.NaN };\\n    #pointerBaseline = { x: Number.NaN, y: Number.NaN };\\n    #pointerActive = false;\\n    #touchObserved = false;\\n    #navHeld: -1 | 0 | 1 | null = null;\\n    #dismissedFor: string | null = null;\\n    #disposed = false;\\n    constructor(options: UniversalActionSurfaceOptions) {\\n        this.#document = options.document ?? options.host.ownerDocument;\\n        this.#hints = options.hints;\\n        this.#onInvoke = options.onInvoke;\\n        this.#onDismiss = options.onDismiss;\\n        this.#onOpenChange = options.onOpenChange;\\n        ensureActionSurfaceStyles(this.#document);\\n        this.element = make(this.#document, 'section', 'helix-action-surface');\\n        this.element.dataset.testid = 'action-surface';\\n        this.element.setAttribute('aria-live', 'polite');\\n        this.element.hidden = true;\\n        const header = make(this.#document, 'header', 'helix-action-surface__header');\\n        this.#title = make(this.#document, 'h2', 'helix-action-surface__title');\\n        this.#status = make(this.#document, 'span', 'helix-action-surface__status');\\n        const close = make(this.#document, 'button', 'helix-action-surface__close') as HTMLButtonElement;\\n        close.type = 'button';\\n        close.dataset.testid = 'action-surface-close';\\n        close.setAttribute('aria-label', 'Close');\\n        close.textContent = '✕';\\n        close.addEventListener('click', () => this.cancel());\\n        header.append(this.#title, this.#status, close);\\n        this.#list = make(this.#document, 'div', 'helix-action-surface__list');\\n        this.#list.addEventListener('pointermove', (event) => this.#onListPointerMove(event as PointerEvent));\\n        this.element.addEventListener('pointerdown', (event) => this.observePointer((event as PointerEvent).pointerType));\\n        this.#hint = make(this.#document, 'footer', 'helix-action-surface__hint');\\n        this.element.append(header, this.#list, this.#hint);\\n        options.host.append(this.element);\\n        this.#unsubscribeHints = this.#hints.subscribe?.(() => this.#renderHints()) ?? (() => undefined);\\n    }\\n    get isOpen(): boolean { return this.#snapshot !== null; }\\n    get instanceId(): string | null { return this.#snapshot?.instanceId ?? null; }\\n    get mode(): 'browse' | 'number' | 'text' | 'picker' { return this.#mode.type; }\\n    get selectedAction(): ActionSurfaceAction | null { return this.#actions[this.#cursor] ?? null; }\\n    get visibleActions(): readonly ActionSurfaceAction[] { return this.#actions; }\\n    get liveNumber(): number | null { return this.#mode.type === 'number' ? this.#mode.value : null; }\\n    get liveText(): string | null { return this.#mode.type === 'text' ? this.#mode.value : null; }\\n    setSnapshot(snapshot: ActionSurfaceSnapshot | null): void {\\n        this.#assertLive();\\n        if (snapshot === null) {\\n            this.hide();\\n            return;\\n        }\\n        if (this.#dismissedFor === snapshot.instanceId)\\n            return;\\n        const errors = validateActionSurfaceSnapshot(snapshot);\\n        if (errors.length)\\n            throw new Error(`invalid action-surface snapshot: ${errors.join('; ')}`);\\n        const wasOpen = this.isOpen;\\n        const sameInstance = this.#snapshot?.instanceId === snapshot.instanceId;\\n        const selectedId = sameInstance ? th"
    "is.selectedAction?.id : undefined;\\n        const visible = snapshot.actions.filter((action) => action.visible !== false);\\n        this.#snapshot = snapshot;\\n        this.#actions = visible;\\n        if (!sameInstance) {\\n            this.#mode = { type: 'browse' };\\n            this.#cursor = firstEnabled(visible, snapshot.availability);\\n            this.#navHeld = null;\\n            this.#parkPointer();\\n        }\\n        else {\\n            const selectedIndex = selectedId ? visible.findIndex((action) => action.id === selectedId) : -1;\\n            this.#cursor = selectedIndex >= 0 ? selectedIndex : Math.min(this.#cursor, Math.max(0, visible.length - 1));\\n            this.#refreshSustainedAction();\\n        }\\n        if (visible.length === 0) {\\n            this.hide();\\n            return;\\n        }\\n        this.element.hidden = false;\\n        this.#title.textContent = snapshot.title;\\n        this.#renderStatus();\\n        if (this.#mode.type === 'number' && sameInstance)\\n            this.#refreshNumberDom();\\n        else if (this.#mode.type === 'text' && sameInstance)\\n            this.#refreshTextDom();\\n        else\\n            this.#render();\\n        if (!wasOpen)\\n            this.#onOpenChange?.(true);\\n    }\\n    hide(): void {\\n        if (!this.isOpen)\\n            return;\\n        this.#snapshot = null;\\n        this.#actions = [];\\n        this.#cursor = 0;\\n        this.#mode = { type: 'browse' };\\n        this.#navHeld = null;\\n        this.element.hidden = true;\\n        this.#list.replaceChildren();\\n        this.#hint.replaceChildren();\\n        this.#onOpenChange?.(false);\\n    }\\n    dismiss(): void {\\n        const id = this.#snapshot?.instanceId;\\n        if (!id)\\n            return;\\n        this.#dismissedFor = id;\\n        this.hide();\\n        this.#onDismiss?.(id);\\n    }\\n    rearm(): void { this.#dismissedFor = null; }\\n    refreshHints(): void {\\n        this.#assertLive();\\n        this.#renderHints();\\n    }\\n    observePointer(pointerType: string): void {\\n        this.#assertLive();\\n        const touch = pointerType === 'touch';\\n        if (touch === this.#touchObserved)\\n            return;\\n        this.#touchObserved = touch;\\n        this.#renderHints();\\n    }\\n    move(delta: -1 | 1): void {\\n        if (!this.#snapshot || this.#actions.length === 0)\\n            return;\\n        this.#parkPointer();\\n        if (this.#touchObserved) {\\n            this.#touchObserved = false;\\n            this.#renderHints();\\n        }\\n        if (this.#mode.type === 'number') {\\n            this.#setNumber(this.#mode.value + delta * (this.#mode.action.step ?? 0.01));\\n            return;\\n        }\\n        if (this.#mode.type === 'picker') {\\n            this.#movePicker(delta);\\n            return;\\n        }\\n        const count = this.#actions.length;\\n        let index = this.#cursor;\\n        for (let step = 0; step < count; step++) {\\n            index = (index + delta + count) % count;\\n            if (isActionEnabled(this.#actions[index], this.#snapshot.availability))\\n                break;\\n        }\\n        this.#cursor = index;\\n        this.#refreshBrowseSelection();\\n    }\\n    confirm(): void {\\n        const action = this.#mode.type === 'browse' ? this.selectedAction : this.#mode.action;\\n        if (!action || !this.#snapshot)\\n            return;\\n        if (this.#mode.type === 'number') {\\n            this.#endSustained();\\n            return;\\n        }\\n        if (this.#mode.type === 'text') {\\n            this.#onInvoke({ action, kind: 'text', value: this.#mode.value });\\n            this.#endSustained();\\n            return;\\n        }\\n        if (this.#mode.type === 'picker') {\\n            const option = action.options?.[this.#mode.index];\\n            if (option && option.disabled !== true) {\\n                this.#onInvoke({ action, kind: action.kind as 'choice' | 'asset', value: option.value });\\n                this.#endSustained();\\n            }\\n            return;\\n        }\\n        if (!isActionEnabled(action, this.#snapshot.availabilit"
    "y))\\n            return;\\n        if (action.kind === 'number') {\\n            this.#beginNumber(action);\\n            return;\\n        }\\n        if (action.kind === 'text') {\\n            this.#beginText(action);\\n            return;\\n        }\\n        if (action.kind === 'choice' || action.kind === 'asset') {\\n            this.#beginPicker(action);\\n            return;\\n        }\\n        this.#onInvoke({ action, kind: action.kind });\\n    }\\n    cancel(): void {\\n        if (this.#mode.type !== 'browse')\\n            this.#endSustained();\\n        else\\n            this.dismiss();\\n    }\\n    endEngagement(): void {\\n        this.#navHeld = null;\\n        if (this.#mode.type === 'browse')\\n            return;\\n        this.#endSustained();\\n    }\\n    handleVerb(verb: 'navigate' | 'activate' | 'back', event: VerbEvent): void {\\n        if (verb === 'navigate' && event.phase === 'end') {\\n            this.#navHeld = null;\\n            return;\\n        }\\n        if (event.phase === 'end')\\n            return;\\n        if (verb === 'activate') {\\n            if (event.phase === 'start')\\n                this.confirm();\\n            return;\\n        }\\n        if (verb === 'back') {\\n            if (event.phase === 'start')\\n                this.cancel();\\n            return;\\n        }\\n        const vector = event.vector;\\n        if (!vector)\\n            return;\\n        if (this.#mode.type === 'text')\\n            return;\\n        const axis = this.#mode.type === 'number'\\n            ? Math.abs(vector.x) >= Math.abs(vector.y)\\n                ? vector.x\\n                : vector.y\\n            : Math.abs(vector.y) >= Math.abs(vector.x)\\n                ? vector.y\\n                : -vector.x;\\n        const delta: -1 | 1 = this.#mode.type === 'number'\\n            ? axis > 0\\n                ? 1\\n                : -1\\n            : axis > 0\\n                ? -1\\n                : 1;\\n        const direction = axis === 0 ? 0 : delta;\\n        if (event.phase === 'start') {\\n            this.#navHeld = Math.abs(axis) >= NAV_PRESS ? direction : 0;\\n            if (Math.abs(axis) >= NAV_PRESS)\\n                this.move(delta);\\n            return;\\n        }\\n        if (this.#navHeld === null || Math.abs(axis) < NAV_PRESS)\\n            return;\\n        this.#navHeld = direction;\\n        this.move(delta);\\n    }\\n    dispose(): void {\\n        if (this.#disposed)\\n            return;\\n        this.#disposed = true;\\n        this.#unsubscribeHints();\\n        this.element.remove();\\n        this.#snapshot = null;\\n        this.#actions = [];\\n        this.#navHeld = null;\\n    }\\n    #beginNumber(action: ActionSurfaceAction): void {\\n        const min = action.min ?? 0;\\n        const max = action.max ?? 1;\\n        const initial = typeof action.value === 'number' ? action.value : min;\\n        this.#mode = { type: 'number', action, value: clamp(initial, min, max) };\\n        this.#render();\\n    }\\n    #beginText(action: ActionSurfaceAction): void {\\n        const initial = typeof action.value === 'string' ? action.value : '';\\n        this.#mode = { type: 'text', action, value: initial.slice(0, action.maxLength ?? 4096) };\\n        this.#render();\\n    }\\n    #beginPicker(action: ActionSurfaceAction): void {\\n        const options = action.options ?? [];\\n        if (options.length === 0)\\n            return;\\n        const current = action.value === undefined || action.value === null\\n            ? -1\\n            : options.findIndex((option) => option.value === String(action.value));\\n        const first = firstEnabledOption(options, current >= 0 ? current : 0);\\n        this.#mode = { type: 'picker', action, index: first };\\n        this.#render();\\n    }\\n    #movePicker(delta: -1 | 1): void {\\n        if (this.#mode.type !== 'picker')\\n            return;\\n        const options = this.#mode.action.options ?? [];\\n        if (options.length === 0)\\n            return;\\n        let index = this.#mode.index;\\n        for (let step = 0; step < options.length; step++) {\\n            index = (index + delta + optio"
    "ns.length) % options.length;\\n            if (options[index].disabled !== true)\\n                break;\\n        }\\n        this.#mode.index = index;\\n        this.#render();\\n    }\\n    #setNumber(raw: number): void {\\n        if (this.#mode.type !== 'number' || !Number.isFinite(raw))\\n            return;\\n        const action = this.#mode.action;\\n        const min = action.min ?? 0;\\n        const max = action.max ?? 1;\\n        const step = action.step ?? 0.01;\\n        const rounded = roundToStep(clamp(raw, min, max), min, step);\\n        if (!Number.isFinite(rounded))\\n            return;\\n        const value = clamp(rounded, min, max);\\n        if (value === this.#mode.value)\\n            return;\\n        this.#mode.value = value;\\n        this.#refreshNumberDom();\\n        this.#onInvoke({ action, kind: 'number', value });\\n    }\\n    #endSustained(): void {\\n        this.#parkPointer();\\n        const active = this.#document.activeElement;\\n        if (active instanceof this.#document.defaultView!.HTMLElement && this.#list.contains(active))\\n            active.blur();\\n        this.#mode = { type: 'browse' };\\n        this.#render();\\n    }\\n    #refreshSustainedAction(): void {\\n        const mode = this.#mode;\\n        if (mode.type === 'browse' || !this.#snapshot)\\n            return;\\n        const focusedValue = mode.type === 'picker' ? mode.action.options?.[mode.index]?.value : undefined;\\n        const action = this.#actions.find((candidate) => candidate.id === mode.action.id);\\n        if (!action || !isActionEnabled(action, this.#snapshot.availability) || action.kind !== mode.action.kind) {\\n            this.#mode = { type: 'browse' };\\n            return;\\n        }\\n        mode.action = action;\\n        if (mode.type === 'number') {\\n            mode.value = clamp(mode.value, action.min ?? 0, action.max ?? 1);\\n        }\\n        if (mode.type === 'picker') {\\n            const options = action.options ?? [];\\n            const index = focusedValue ? options.findIndex((option) => option.value === focusedValue) : -1;\\n            mode.index = firstEnabledOption(options, index >= 0 ? index : 0);\\n        }\\n    }\\n    #render(): void {\\n        if (!this.#snapshot)\\n            return;\\n        this.#renderStatus();\\n        if (this.#mode.type === 'number')\\n            this.#renderNumber();\\n        else if (this.#mode.type === 'text')\\n            this.#renderText();\\n        else if (this.#mode.type === 'picker')\\n            this.#renderPicker();\\n        else\\n            this.#renderBrowse();\\n        this.#renderHints();\\n    }\\n    #renderStatus(): void {\\n        const availability = this.#snapshot?.availability;\\n        this.#status.textContent = availability?.state === 'available'\\n            ? ''\\n            : availability?.label ?? (availability?.state === 'occupied' ? 'Occupied' : availability?.state === 'busy' ? 'Busy' : '');\\n        this.#status.dataset.state = availability?.state ?? 'available';\\n    }\\n    #renderBrowse(): void {\\n        this.element.dataset.mode = 'browse';\\n        const rows = this.#actions.map((action, index) => {\\n            const button = make(this.#document, 'button', 'helix-action-surface__row') as HTMLButtonElement;\\n            const enabled = isActionEnabled(action, this.#snapshot?.availability);\\n            button.type = 'button';\\n            button.dataset.testid = `action-${action.id}`;\\n            button.dataset.index = String(index);\\n            button.dataset.selected = String(index === this.#cursor);\\n            button.setAttribute('aria-selected', String(index === this.#cursor));\\n            button.disabled = !enabled;\\n            const label = make(this.#document, 'span', 'helix-action-surface__label');\\n            label.textContent = action.label;\\n            const metaText = actionMeta(action);\\n            button.append(label);\\n            if (metaText) {\\n                const meta = make(this.#document, 'span', 'helix-action-surface__meta');\\n                meta.textContent = metaText;\\n                button.append(meta);\\n "
    "           }\\n            button.addEventListener('click', () => {\\n                this.#pointerActive = true;\\n                this.#cursor = index;\\n                this.#refreshBrowseSelection();\\n                this.confirm();\\n            });\\n            return button;\\n        });\\n        this.#list.replaceChildren(...rows);\\n    }\\n    #onListPointerMove(event: PointerEvent): void {\\n        if (event.clientX === this.#lastPointer.x && event.clientY === this.#lastPointer.y)\\n            return;\\n        this.#lastPointer = { x: event.clientX, y: event.clientY };\\n        if (event.pointerType === 'touch')\\n            return;\\n        if (this.#mode.type !== 'browse')\\n            return;\\n        if (!this.#pointerActive) {\\n            const dx = event.clientX - this.#pointerBaseline.x;\\n            const dy = event.clientY - this.#pointerBaseline.y;\\n            if (Math.hypot(dx, dy) < POINTER_WAKE_PX)\\n                return;\\n            this.#pointerActive = true;\\n        }\\n        const row = (event.target as Element | null)?.closest?.('[data-index]');\\n        if (!(row instanceof this.#document.defaultView!.HTMLElement))\\n            return;\\n        if (row.hasAttribute('disabled'))\\n            return;\\n        const index = Number(row.dataset.index);\\n        if (!Number.isInteger(index) || index === this.#cursor)\\n            return;\\n        this.#cursor = index;\\n        this.#refreshBrowseSelection();\\n    }\\n    #parkPointer(): void {\\n        this.#pointerActive = false;\\n        this.#pointerBaseline = { ...this.#lastPointer };\\n    }\\n    #refreshBrowseSelection(): void {\\n        if (this.#mode.type !== 'browse')\\n            return;\\n        for (const row of this.#list.querySelectorAll<HTMLElement>('[data-index]')) {\\n            const selected = Number(row.dataset.index) === this.#cursor;\\n            row.dataset.selected = String(selected);\\n            row.setAttribute('aria-selected', String(selected));\\n        }\\n    }\\n    #renderNumber(): void {\\n        if (this.#mode.type !== 'number')\\n            return;\\n        const action = this.#mode.action;\\n        const min = action.min ?? 0;\\n        const max = action.max ?? 1;\\n        this.element.dataset.mode = 'number';\\n        const wrap = make(this.#document, 'div', 'helix-action-surface__adjust');\\n        wrap.dataset.testid = `number-${action.id}`;\\n        const head = make(this.#document, 'div', 'helix-action-surface__adjust-head');\\n        const label = make(this.#document, 'span', 'helix-action-surface__label');\\n        label.textContent = action.label;\\n        const output = make(this.#document, 'output', 'helix-action-surface__value') as HTMLOutputElement;\\n        output.dataset.testid = 'number-value';\\n        head.append(label, output);\\n        const input = make(this.#document, 'input', 'helix-action-surface__range') as HTMLInputElement;\\n        input.type = 'range';\\n        input.min = String(min);\\n        input.max = String(max);\\n        input.step = String(action.step ?? 0.01);\\n        input.dataset.testid = 'number-range';\\n        input.setAttribute('aria-label', action.label);\\n        const push = () => this.#setNumber(Number(input.value));\\n        input.addEventListener('input', push);\\n        input.addEventListener('change', push);\\n        const submit = make(this.#document, 'button', 'helix-action-surface__number-submit') as HTMLButtonElement;\\n        submit.type = 'button';\\n        submit.dataset.testid = 'number-submit';\\n        submit.textContent = 'Done';\\n        submit.addEventListener('click', () => this.confirm());\\n        wrap.append(head, input, submit);\\n        this.#list.replaceChildren(wrap);\\n        this.#refreshNumberDom();\\n    }\\n    #refreshNumberDom(): void {\\n        if (this.#mode.type !== 'number')\\n            return;\\n        const action = this.#mode.action;\\n        const value = this.#mode.value;\\n        const output = this.#list.querySelector<HTMLOutputElement>('[data-testid=\\\"number-value\\\"]');\\n        if (output)\\n            output.textContent = for"
    "matNumber(value, action.step, action.unit);\\n        const input = this.#list.querySelector<HTMLInputElement>('[data-testid=\\\"number-range\\\"]');\\n        if (input) {\\n            input.min = String(action.min ?? 0);\\n            input.max = String(action.max ?? 1);\\n            input.step = String(action.step ?? 0.01);\\n            input.setAttribute('aria-label', action.label);\\n            if (Number(input.value) !== value)\\n                input.value = String(value);\\n        }\\n    }\\n    #renderText(): void {\\n        if (this.#mode.type !== 'text')\\n            return;\\n        const action = this.#mode.action;\\n        this.element.dataset.mode = 'text';\\n        const wrap = make(this.#document, 'div', 'helix-action-surface__text');\\n        wrap.dataset.testid = `text-${action.id}`;\\n        const label = make(this.#document, 'label', 'helix-action-surface__label') as HTMLLabelElement;\\n        label.textContent = action.label;\\n        const input = make(this.#document, 'input', 'helix-action-surface__text-input') as HTMLInputElement;\\n        input.type = 'text';\\n        input.dataset.testid = 'text-input';\\n        input.value = this.#mode.value;\\n        input.placeholder = action.placeholder ?? '';\\n        input.inputMode = action.inputMode ?? 'text';\\n        if (action.maxLength !== undefined)\\n            input.maxLength = action.maxLength;\\n        label.htmlFor = `${this.#snapshot?.instanceId ?? 'action'}-${action.id}-input`;\\n        input.id = label.htmlFor;\\n        input.addEventListener('input', () => {\\n            if (this.#mode.type === 'text')\\n                this.#mode.value = input.value;\\n        });\\n        input.addEventListener('keydown', (event) => {\\n            event.stopPropagation();\\n            if (event.key === 'Enter' && !event.isComposing) {\\n                event.preventDefault();\\n                this.confirm();\\n            }\\n            else if (event.key === 'Escape') {\\n                event.preventDefault();\\n                this.cancel();\\n            }\\n        });\\n        const submit = make(this.#document, 'button', 'helix-action-surface__text-submit') as HTMLButtonElement;\\n        submit.type = 'button';\\n        submit.dataset.testid = 'text-submit';\\n        submit.textContent = 'Submit';\\n        submit.addEventListener('click', () => this.confirm());\\n        wrap.append(label, input, submit);\\n        this.#list.replaceChildren(wrap);\\n        input.focus({ preventScroll: true });\\n    }\\n    #refreshTextDom(): void {\\n        if (this.#mode.type !== 'text')\\n            return;\\n        const action = this.#mode.action;\\n        const input = this.#list.querySelector<HTMLInputElement>('[data-testid=\\\"text-input\\\"]');\\n        if (!input)\\n            return;\\n        input.placeholder = action.placeholder ?? '';\\n        input.inputMode = action.inputMode ?? 'text';\\n        if (action.maxLength !== undefined)\\n            input.maxLength = action.maxLength;\\n        else\\n            input.removeAttribute('maxlength');\\n        if (this.#document.activeElement !== input)\\n            input.value = this.#mode.value;\\n    }\\n    #renderPicker(): void {\\n        if (this.#mode.type !== 'picker')\\n            return;\\n        const action = this.#mode.action;\\n        this.element.dataset.mode = 'picker';\\n        const current = action.value === undefined || action.value === null ? null : String(action.value);\\n        const rows = (action.options ?? []).map((option, index) => {\\n            const button = make(this.#document, 'button', 'helix-action-surface__row') as HTMLButtonElement;\\n            button.type = 'button';\\n            button.dataset.testid = `option-${option.value}`;\\n            button.dataset.selected = String(index === this.#modePickerIndex());\\n            button.dataset.current = String(option.value === current);\\n            button.setAttribute('role', 'radio');\\n            button.setAttribute('aria-selected', String(index === this.#modePickerIndex()));\\n            button.setAttribute('aria-checked', String(option.value === cur"
    "rent));\\n            button.disabled = option.disabled === true;\\n            const mark = make(this.#document, 'span', 'helix-action-surface__mark');\\n            mark.textContent = option.value === current ? '✓' : '';\\n            mark.setAttribute('aria-hidden', 'true');\\n            const label = make(this.#document, 'span', 'helix-action-surface__label');\\n            label.textContent = option.label;\\n            button.append(mark, label);\\n            if (option.reason) {\\n                const reason = make(this.#document, 'span', 'helix-action-surface__meta');\\n                reason.textContent = option.reason;\\n                button.append(reason);\\n            }\\n            button.addEventListener('click', () => {\\n                if (this.#mode.type !== 'picker')\\n                    return;\\n                this.#mode.index = index;\\n                this.confirm();\\n            });\\n            return button;\\n        });\\n        this.#list.replaceChildren(...rows);\\n    }\\n    #modePickerIndex(): number { return this.#mode.type === 'picker' ? this.#mode.index : -1; }\\n    #renderHints(): void {\\n        if (!this.#snapshot)\\n            return;\\n        const reported = this.#hints.activeDevice();\\n        const device = this.#touchObserved && reported === 'keyboard' ? 'touch' : reported;\\n        this.element.dataset.device = device;\\n        const rows: Array<[\\n            StandardModeAction,\\n            string\\n        ]> = this.#mode.type === 'number'\\n            ? [['move', 'adjust'], ['primary', 'done'], ['cancel', 'back']]\\n            : this.#mode.type === 'text'\\n                ? [['primary', 'submit'], ['cancel', 'back']]\\n                : this.#mode.type === 'picker'\\n                    ? [['move', 'choose'], ['primary', 'set'], ['cancel', 'back']]\\n                    : [['move', 'choose'], ['primary', 'select'], ['cancel', 'close']];\\n        const fragments: HTMLElement[] = [];\\n        for (const [action, label] of rows) {\\n            const hint = make(this.#document, 'span', 'helix-action-surface__hint-item');\\n            const key = make(this.#document, 'kbd', 'helix-action-surface__key');\\n            key.textContent = this.#hints.hint(action as 'move' | 'primary' | 'cancel');\\n            const text = make(this.#document, 'span', 'helix-action-surface__hint-label');\\n            text.textContent = label;\\n            hint.append(key, text);\\n            fragments.push(hint);\\n        }\\n        this.#hint.replaceChildren(...fragments);\\n    }\\n    #assertLive(): void {\\n        if (this.#disposed)\\n            throw new Error('action surface is disposed');\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "UniversalActionSurfaceOptions", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface UniversalActionSurfaceOptions {\\n    host: HTMLElement;\\n    hints: ActionSurfaceHintSource;\\n    onInvoke(invocation: ActionSurfaceInvocation): void;\\n    onDismiss?(instanceId: string): void;\\n    onOpenChange?(open: boolean): void;\\n    document?: Document;\\n    now?(): number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "validateActionSurfaceSnapshot", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function validateActionSurfaceSnapshot(snapshot: ActionSurfaceSnapshot): string[] {\\n    const errors: string[] = [];\\n    if (!snapshot.instanceId.trim())\\n        errors.push('instanceId is required');\\n    if (!snapshot.title.trim())\\n        errors.push('title is required');\\n    const ids = new Set<string>();\\n    for (const [index, action] of snapshot.actions.entries()) {\\n        const at = `actions[${index}]`;\\n        if (!action.id.trim())\\n            errors.push(`${at}.id is required`);\\n        else if (ids.has(action.id))\\n            errors.push(`${at}.id duplicates '${action.id}'`);\\n        else\\n            ids.add(action.id);\\n        if (!action.label.trim())\\n            errors.push(`${at}.label is required`);\\n        if (!ACTION_KINDS.has(action.kind))\\n            errors.push(`${at}.kind '${String(action.kind)}' is unsupported`);\\n        if (action.enabled === false && !readableReason(action)) {\\n            errors.push(`${at} is disabled without a player-readable reason`);\\n        }\\n        if (action.kind === 'number') {\\n            const min = action.min ?? 0;\\n            const max = action.max ?? 1;\\n            const step = action.step ?? 0.01;\\n            if (![min, max, step].every((value) => Number.isFinite(value))) {\\n                errors.push(`${at} has non-finite number bounds`);\\n            }\\n            else {\\n                if (max <= min)\\n                    errors.push(`${at}.max must be greater than min`);\\n                if (step <= 0)\\n                    errors.push(`${at}.step must be positive`);\\n            }\\n            if (action.value !== undefined && action.value !== null && typeof action.value !== 'number') {\\n                errors.push(`${at}.value must be a number`);\\n            }\\n            else if (typeof action.value === 'number' && !Number.isFinite(action.value)) {\\n                errors.push(`${at}.value must be finite`);\\n            }\\n        }\\n        if (action.kind === 'text') {\\n            if (action.value !== undefined && action.value !== null && typeof action.value !== 'string') {\\n                errors.push(`${at}.value must be a string`);\\n            }\\n            if (action.maxLength !== undefined && (!Number.isInteger(action.maxLength) || action.maxLength < 1 || action.maxLength > 4096)) {\\n                errors.push(`${at}.maxLength must be an integer between 1 and 4096`);\\n            }\\n        }\\n        if (action.kind === 'choice' || action.kind === 'asset') {\\n            const optionValues = new Set<string>();\\n            for (const [optionIndex, option] of (action.options ?? []).entries()) {\\n                const optionAt = `${at}.options[${optionIndex}]`;\\n                if (!option.value)\\n                    errors.push(`${optionAt}.value is required`);\\n                else if (optionValues.has(option.value))\\n                    errors.push(`${optionAt}.value duplicates '${option.value}'`);\\n                else\\n                    optionValues.add(option.value);\\n                if (!option.label.trim())\\n                    errors.push(`${optionAt}.label is required`);\\n                if (option.disabled === true && !(option.reason?.trim())) {\\n                    errors.push(`${optionAt} is disabled without a player-readable reason`);\\n                }\\n            }\\n        }\\n    }\\n    return errors;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/action-surface.ts\"\n  }\n]" },
  { "validateCameraControl", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"export function validateCameraControl(control: HelixCameraControl): string | null {\\n    if (!isRecord(control))\\n        return 'camera.control expects a control patch object';\\n    const present = Object.keys(control).filter((key) => (control as Record<string, unknown>)[key] !== undefined);\\n    if (present.length === 0)\\n        return 'camera.control requires at least one field to change';\\n    const known: Record<keyof HelixCameraControl, true> = {\\n        session: true,\\n        media: true,\\n        spatial: true,\\n        controlTarget: true,\\n        zoom: true,\\n        filter: true,\\n        timerSeconds: true,\\n        aim: true,\\n        focusPoint: true,\\n        exposureBias: true,\\n        shutter: true,\\n        recording: true,\\n        worldAudio: true,\\n    };\\n    const unknown = present.filter((key) => !Object.prototype.hasOwnProperty.call(known, key));\\n    if (unknown.length > 0) {\\n        return `camera.control does not accept ${unknown.sort().join(', ')}`;\\n    }\\n    if (control.session !== undefined && !isCameraSessionState(control.session)) {\\n        return 'camera.control session is outside the shared vocabulary';\\n    }\\n    if (control.media !== undefined && !isCameraMediaMode(control.media)) {\\n        return 'camera.control media is outside the shared vocabulary';\\n    }\\n    if (control.spatial !== undefined && !isCameraSpatialMode(control.spatial)) {\\n        return 'camera.control spatial is outside the shared vocabulary';\\n    }\\n    if (control.controlTarget !== undefined && !isCameraControlTarget(control.controlTarget)) {\\n        return 'camera.control controlTarget is outside the shared vocabulary';\\n    }\\n    if (control.filter !== undefined && !isCameraFilterId(control.filter)) {\\n        return 'camera.control filter is outside the shared vocabulary';\\n    }\\n    if (control.timerSeconds !== undefined && !isCameraTimerSeconds(control.timerSeconds)) {\\n        return 'camera.control timerSeconds must be 0, 3 or 10';\\n    }\\n    if (control.zoom !== undefined &&\\n        (!finite(control.zoom) || control.zoom < CAMERA_MIN_ZOOM || control.zoom > CAMERA_MAX_ZOOM)) {\\n        return `camera.control zoom must be between ${CAMERA_MIN_ZOOM} and ${CAMERA_MAX_ZOOM}`;\\n    }\\n    if (control.aim !== undefined && !normalizeAim(control.aim)) {\\n        return 'camera.control aim needs finite yaw and pitch';\\n    }\\n    if (control.focusPoint !== undefined && !normalizeFocusPoint(control.focusPoint)) {\\n        return 'camera.control focusPoint must be inside the 0..1 viewport';\\n    }\\n    if (control.exposureBias !== undefined && !finite(control.exposureBias)) {\\n        return 'camera.control exposureBias must be a finite number of stops';\\n    }\\n    for (const flag of ['shutter', 'recording', 'worldAudio'] as const) {\\n        if (control[flag] !== undefined && typeof control[flag] !== 'boolean') {\\n            return `camera.control ${flag} must be a boolean`;\\n        }\\n    }\\n    return null;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/camera.ts\"\n  }\n]" },
  { "validateInputMap", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function validateInputMap(input: InputMap, suppression: Suppression = {}): string[] {\\n    const errors: string[] = [];\\n    const enabledActions = new Map<StandardModeAction, string>();\\n    const surfaceContinuous: string[] = [];\\n    for (const [verb, typedBinding] of Object.entries(input)) {\\n        const binding = typedBinding as unknown as Record<string, unknown>;\\n        for (const field of RAW_BINDING_FIELDS) {\\n            if (Object.prototype.hasOwnProperty.call(binding, field)) {\\n                errors.push(`verb '${verb}' declares raw device field '${field}'`);\\n            }\\n        }\\n        const action = binding.action;\\n        if (typeof action !== 'string' || !ACTIONS.has(action as StandardModeAction)) {\\n            errors.push(`verb '${verb}' has unsupported action '${String(action)}'`);\\n        }\\n        if (typeof binding.label !== 'string' || binding.label.trim() === '') {\\n            errors.push(`verb '${verb}' has no label, so touch and hints cannot render it`);\\n        }\\n        const touch = binding.touch as Record<string, unknown> | null | undefined;\\n        if (!touch || typeof touch !== 'object') {\\n            errors.push(`verb '${verb}' has no touch presentation`);\\n        }\\n        else {\\n            if (typeof touch.kind !== 'string' || !TOUCH_KINDS.has(touch.kind as TouchPresentationKind)) {\\n                errors.push(`verb '${verb}' has unsupported touch kind '${String(touch.kind)}'`);\\n            }\\n            if (typeof touch.zone !== 'string' || !TOUCH_ZONES.has(touch.zone as TouchPresentationZone)) {\\n                errors.push(`verb '${verb}' has unsupported touch zone '${String(touch.zone)}'`);\\n            }\\n            if (binding.continuous === true && touch.kind !== 'none' && touch.zone === 'surface') {\\n                surfaceContinuous.push(verb);\\n            }\\n            if ((action === 'move' || action === 'look') && !['drag', 'stick', 'none'].includes(String(touch.kind))) {\\n                errors.push(`verb '${verb}' maps vector action '${action}' to non-vector touch kind '${String(touch.kind)}'`);\\n            }\\n        }\\n        if (binding.disabled === true &&\\n            (typeof binding.disabledReason !== 'string' || binding.disabledReason.trim() === '')) {\\n            errors.push(`verb '${verb}' is disabled without disabledReason`);\\n        }\\n        if (binding.repeatMs !== undefined &&\\n            (typeof binding.repeatMs !== 'number' || !Number.isFinite(binding.repeatMs) || binding.repeatMs <= 0)) {\\n            errors.push(`verb '${verb}' has invalid repeatMs`);\\n        }\\n        if (ACTIONS.has(action as StandardModeAction) && binding.disabled !== true) {\\n            const standardAction = action as StandardModeAction;\\n            const prior = enabledActions.get(standardAction);\\n            if (prior) {\\n                errors.push(`verbs '${prior}' and '${verb}' both map enabled action '${standardAction}'`);\\n            }\\n            else if (!prior) {\\n                enabledActions.set(standardAction, verb);\\n            }\\n        }\\n    }\\n    if (surfaceContinuous.length > 1) {\\n        errors.push(`verbs [${surfaceContinuous.join(', ')}] are continuous and claim the whole touch surface; ` +\\n            'at most one may');\\n    }\\n    if ((suppression.locomotion || suppression.cameraControl) && !enabledActions.has('cancel')) {\\n        errors.push('a mode suppressing locomotion or cameraControl requires an enabled cancel action');\\n    }\\n    return errors;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "validFinalRestScope", "value", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export function validFinalRestScope(scope: unknown): scope is FinalRestProvenance | undefined {\\n    if (scope === undefined)\\n        return true;\\n    if (!scope || typeof scope !== 'object')\\n        return false;\\n    const s = scope as FinalRestProvenance;\\n    return finalRestId(s.moduleId) && finalRestSequence(s.generation) &&\\n        (s.engagementEpoch === undefined || finalRestSequence(s.engagementEpoch));\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/multiplayer-contract/final-rest.ts\"\n  }\n]" },
  { "VarsView", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface VarsView {\\n    num(name: string, fallback?: number): number;\\n    str(name: string, fallback?: string): string;\\n    bool(name: string, fallback?: boolean): boolean;\\n    vec3(name: string): Vec3 | null;\\n    list<T = unknown>(name: string): T[];\\n    raw(name: string): unknown;\\n    has(name: string): boolean;\\n    names(): string[];\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-accessors.ts\"\n  }\n]" },
  { "VAULT_ASSET_KINDS", "value", "standalone_tooling", "[\n  {\n    \"declaration\": \"const VAULT_ASSET_KINDS = [\\n    'prop',\\n    'character',\\n    'animation',\\n    'audio',\\n    'texture',\\n    'material',\\n    'environment',\\n    'terrain',\\n    'vfx',\\n    'decal',\\n    'sky',\\n    'gaussian_splat',\\n    'scene',\\n    'unreal_package',\\n] as const;\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultAnimationMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultAnimationMetadata = VaultMetadataBase & {\\n    animation: {\\n        clipCount: number;\\n        clips: string[];\\n        durationSeconds: number | null;\\n        frameCount: number | null;\\n        framesPerSecond: number | null;\\n        rig: string;\\n        loop: boolean;\\n        rootMotion: boolean;\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultApiError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class VaultApiError extends Error {\\n    constructor(readonly status: number, readonly url: string, readonly responseBody: string) {\\n        super(`HELIX Vault request failed (${status})${responseBody ? `: ${responseBody}` : ''}`);\\n        this.name = 'VaultApiError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultArtifactMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultArtifactMetadata = {\\n    format: string;\\n    mimeType: string;\\n    sourceBytes: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultArtifactReference", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultArtifactReference = {\\n    role: 'primary' | string;\\n    url: string | null;\\n    mimeType: string;\\n    sizeBytes: number;\\n    checksumSha256: string | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultArtifactUnavailableError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class VaultArtifactUnavailableError extends Error {\\n    constructor(readonly handle: VaultAssetHandle) {\\n        super(`HELIX Vault asset ${handle.assetId} version ${handle.version} has no servable artifact.`);\\n        this.name = 'VaultArtifactUnavailableError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultAssetDetail", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultAssetDetail<K extends VaultAssetKind = VaultAssetKind> = VaultAssetSummary<K> & {\\n    artifact: VaultResolvedArtifact;\\n    usedInWorlds: Array<{\\n        worldId: string;\\n        slug: string;\\n        title: string;\\n    }>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultAssetHandle", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultAssetHandle = {\\n    assetId: string;\\n    version: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultAssetKind", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultAssetKind = (typeof VAULT_ASSET_KINDS)[number];\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultAssetSummary", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultAssetSummary<K extends VaultAssetKind = VaultAssetKind> = {\\n    assetId: string;\\n    slug: string;\\n    title: string;\\n    description: string | null;\\n    kind: K;\\n    license: 'helix_standard' | 'cc0' | 'cc_by' | 'all_rights_reserved';\\n    compatibility: VaultCompatibility;\\n    metadata: VaultMetadataByKind[K];\\n    tags: string[];\\n    source: 'manual' | 'dreamer' | 'world_generation' | 'import';\\n    origin: 'generated' | 'uploaded';\\n    visibility: 'public' | 'private' | 'held';\\n    currentVersion: number;\\n    thumbnailUrl: string | null;\\n    thumbnailGenerator: string | null;\\n    canonicalThumbnail: VaultCanonicalThumbnail | null;\\n    artifactUrl: string | null;\\n    artifactMimeType: string | null;\\n    artifactSizeBytes: number | null;\\n    contentRating: string;\\n    contentRatingStatus: string | null;\\n    worldUsageCount: number;\\n    usageCount: number;\\n    lastUsedAt: string | null;\\n    creatorId: string;\\n    createdAt: string;\\n    updatedAt: string;\\n    selectionExplanation?: VaultSelectionExplanation | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultAssetVersion", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultAssetVersion = {\\n    handle: VaultAssetHandle;\\n    url: string | null;\\n    mimeType: string;\\n    sizeBytes: number;\\n    checksumSha256: string | null;\\n    notes: string | null;\\n    createdAt: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultAudioGenerationMode", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultAudioGenerationMode = 'sound_effect' | 'music' | 'text_to_speech';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultAudioMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultAudioMetadata = VaultMetadataBase & {\\n    audio: {\\n        format: string;\\n        durationSeconds: number | null;\\n        loop: boolean;\\n        mode?: VaultAudioGenerationMode;\\n        model?: string;\\n        outputFormat?: string;\\n        voiceId?: string;\\n        measuredUsage?: {\\n            creditsCharged: number;\\n            measured: boolean;\\n            providerCostUsd: number;\\n        };\\n        [key: string]: unknown;\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultCanonicalThumbnail", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultCanonicalThumbnail = {\\n    provenance?: string;\\n    rendererVersion?: string;\\n    artifactChecksumSha256?: string;\\n    [key: string]: unknown;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultCapabilityUnavailableError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class VaultCapabilityUnavailableError extends Error {\\n    constructor(readonly capability: 'fetch' | 'sha256') {\\n        super(`HELIX Vault requires ${capability === 'fetch' ? 'Fetch API support' : 'Web Crypto SHA-256 support or an injected sha256 function'} in this runtime.`);\\n        this.name = 'VaultCapabilityUnavailableError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultCharacterMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultCharacterMetadata = VaultMetadataBase & {\\n    character: {\\n        skinned: boolean;\\n        meshCount: number;\\n        triangleCount: number | null;\\n        boneCount: number;\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultChecksumMismatchError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class VaultChecksumMismatchError extends Error {\\n    constructor(readonly expected: string, readonly actual: string) {\\n        super(`HELIX Vault artifact checksum mismatch: expected ${expected}, got ${actual}.`);\\n        this.name = 'VaultChecksumMismatchError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultClient", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultClient = {\\n    search(query?: VaultSearchQuery): Promise<VaultSearchResult>;\\n    get<K extends VaultAssetKind = VaultAssetKind>(assetId: string): Promise<VaultAssetDetail<K>>;\\n    versions(assetId: string): Promise<VaultAssetVersion[]>;\\n    resolve<K extends VaultAssetKind = VaultAssetKind>(handleOrAssetId: VaultAssetHandle | string): Promise<VaultResolvedAsset<K>>;\\n    createLoadPlan(resolved: VaultResolvedAsset): VaultLoadPlan;\\n    download(handleOrAssetId: VaultAssetHandle | string, options?: Pick<VaultInstallOptions, 'verifyChecksum'>): Promise<VaultDownloadedArtifact>;\\n    downloadArtifact(reference: VaultArtifactReference, options?: Pick<VaultInstallOptions, 'verifyChecksum'>): Promise<VaultDownloadedArtifact>;\\n    install(handleOrAssetId: VaultAssetHandle | string, options?: VaultInstallOptions): Promise<VaultInstallResult>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultClientOptions", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultClientOptions = {\\n    apiBaseUrl: string;\\n    fetch?: typeof fetch;\\n    accessToken?: string | null | (() => string | null | Promise<string | null>);\\n    sha256?: (bytes: ArrayBuffer) => Promise<string>;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultCompatibility", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultCompatibility = {\\n    skeleton?: string;\\n    skeletonVerification?: 'verified' | 'declared' | string;\\n    skeletonBonesMatched?: number;\\n    system?: string;\\n    engines?: VaultRuntime[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultDecalMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultDecalMetadata = VaultMetadataBase & {\\n    decal: {\\n        projection: 'planar' | 'box';\\n        widthMeters: number;\\n        heightMeters: number;\\n        blendMode: 'normal' | 'multiply' | 'additive';\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultDownloadedArtifact", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultDownloadedArtifact = {\\n    reference: VaultArtifactReference;\\n    bytes: ArrayBuffer;\\n    checksumVerified: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultEnvironmentMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultEnvironmentMetadata = VaultMetadataBase & {\\n    environment: {\\n        representation: 'mesh' | 'gaussian-splat';\\n        scope?: 'environment';\\n        meshCount?: number;\\n        triangleCount?: number;\\n        dimensionsMeters?: [number, number, number] | null;\\n        materialCount?: number;\\n    };\\n    gaussianSplat?: VaultGaussianSplatMetadata['gaussianSplat'];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultGaussianSplatMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultGaussianSplatMetadata = VaultMetadataBase & {\\n    gaussianSplat: {\\n        format: 'spz';\\n        scope: VaultSplatScope;\\n        pointCount: number | null;\\n        boundsMeters: [number, number, number] | null;\\n        pointDensityPerCubicMeter: number | null;\\n        sphericalHarmonicsDegree: number | null;\\n        quality: 'mobile' | 'balanced' | 'high' | 'cinematic' | 'unverified';\\n        lodCount: number;\\n        compression: {\\n            format: 'spz';\\n            level: unknown;\\n        };\\n        capture: {\\n            provider: unknown;\\n            source: unknown;\\n            metersPerUnit: number;\\n            upAxis: 'x' | 'y' | 'z';\\n        };\\n        performance: {\\n            downloadBytes: number;\\n            memoryBytes: number | null;\\n        };\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultImmutableArtifactReference", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultImmutableArtifactReference = VaultAssetHandle & {\\n    checksumSha256: string;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultInstallOptions", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultInstallOptions = {\\n    relatedRoles?: string[];\\n    verifyChecksum?: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultInstallResult", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultInstallResult = {\\n    asset: VaultResolvedAsset;\\n    plan: VaultLoadPlan;\\n    primary: VaultDownloadedArtifact;\\n    related: VaultDownloadedArtifact[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultLoadPlan", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultLoadPlan = {\\n    loader: 'gltf';\\n    purpose: 'prop' | 'character' | 'animation' | 'environment' | 'terrain';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'image';\\n    purpose: 'texture' | 'decal';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'audio';\\n    purpose: 'audio';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'hdr-environment';\\n    purpose: 'sky';\\n    format: 'hdr' | 'exr';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'gaussian-splat';\\n    purpose: 'gaussian_splat' | 'environment';\\n    format: 'spz';\\n    scope: VaultSplatScope;\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'helix-descriptor';\\n    purpose: 'material' | 'scene' | 'terrain' | 'vfx' | 'sky';\\n    schema: 'helix-material@1' | 'helix-scene@1' | 'helix-terrain@1' | 'helix-vfx@1' | 'helix-sky@1';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultMaterialMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultMaterialMetadata = VaultMetadataBase & {\\n    material: {\\n        schemaVersion: string;\\n        materialId: string;\\n        materialType: 'pbr' | 'procedural_glass' | 'procedural_water';\\n        mapSemantics: string[];\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultMetadataByKind", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultMetadataByKind = {\\n    prop: VaultPropMetadata;\\n    character: VaultCharacterMetadata;\\n    animation: VaultAnimationMetadata;\\n    audio: VaultAudioMetadata;\\n    texture: VaultTextureMetadata;\\n    material: VaultMaterialMetadata;\\n    environment: VaultEnvironmentMetadata;\\n    terrain: VaultTerrainMetadata;\\n    vfx: VaultVfxMetadata;\\n    decal: VaultDecalMetadata;\\n    sky: VaultSkyMetadata;\\n    gaussian_splat: VaultGaussianSplatMetadata;\\n    scene: VaultSceneMetadata;\\n    unreal_package: VaultUnrealPackageMetadata;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultPerformanceMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultPerformanceMetadata = {\\n    costScore: number | null;\\n    tier: VaultPerformanceTier;\\n    downloadBytes: number;\\n    qualityScore: number | null;\\n    rankingSignals: string[];\\n    triangles?: number;\\n    drawCalls?: number;\\n    maxTextureEdge?: number;\\n    memoryBytes?: number | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultPerformanceTier", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultPerformanceTier = 'mobile' | 'desktop' | 'cinematic' | 'unknown';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultPropMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultPropMetadata = VaultMetadataBase & {\\n    prop: {\\n        static: true;\\n        coordinateSystem: string;\\n        units: 'meters' | string;\\n        dimensionsMeters: [number, number, number];\\n        triangleCount: number;\\n        materialCount: number;\\n        maxTextureEdge: number;\\n        fileSizeBytes: number;\\n        lods: Array<{\\n            level: number;\\n            triangles: number;\\n            format: string;\\n        }>;\\n        limits: {\\n            maxFileBytes: number;\\n            maxTextureEdge: number;\\n            generated: boolean;\\n            [key: string]: unknown;\\n        };\\n        [key: string]: unknown;\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultRankMode", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultRankMode = 'relevance' | 'performance' | 'reuse';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultRelatedArtifact", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultRelatedArtifact = {\\n    role: string;\\n    url: string | null;\\n    mimeType: string;\\n    sizeBytes: number;\\n    checksumSha256: string | null;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultResolvedArtifact", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultResolvedArtifact = {\\n    assetId: string;\\n    version: number;\\n    url: string | null;\\n    urlKind: 'cdn' | 'unavailable';\\n    mimeType: string;\\n    sizeBytes: number;\\n    checksumSha256: string | null;\\n    relatedArtifacts: VaultRelatedArtifact[];\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultResolvedAsset", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultResolvedAsset<K extends VaultAssetKind = VaultAssetKind> = {\\n    handle: VaultAssetHandle;\\n    asset: VaultAssetDetail<K>;\\n    artifact: VaultResolvedArtifact;\\n    relatedArtifactsComplete: boolean;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultRuntime", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultRuntime = 'web' | 'unreal';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultSceneMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultSceneMetadata = VaultMetadataBase & {\\n    scene: {\\n        schemaVersion: string;\\n        nodeCount: number;\\n        references: Array<VaultImmutableArtifactReference & {\\n            kind: 'prop' | 'character' | 'environment' | 'scene' | 'terrain' | 'vfx';\\n        }>;\\n        runtimeBundles: Array<{\\n            runtime: VaultRuntime;\\n            format: string;\\n            artifact: VaultImmutableArtifactReference;\\n        }>;\\n        budget: {\\n            deviceTier: 'mobile' | 'desktop' | 'cinematic';\\n            derivedTotals: {\\n                uniqueMaterials: number;\\n                drawCalls: number;\\n                decodedTextureMemoryBytes: number;\\n                triangles: number;\\n                particles: number;\\n            };\\n            basis: 'server-resolved-immutable-artifacts';\\n            limits: {\\n                uniqueMaterials: number;\\n                drawCalls: number;\\n                decodedTextureMemoryBytes: number;\\n                triangles: number;\\n                particles: number;\\n            };\\n            costScore: number;\\n            withinBudget: true;\\n        };\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultSearchQuery", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultSearchQuery = {\\n    q?: string;\\n    kind?: VaultAssetKind | VaultAssetKind[];\\n    subtype?: string;\\n    scope?: VaultSplatScope;\\n    format?: string;\\n    performanceTier?: VaultPerformanceTier;\\n    skeleton?: 'humanoid' | 'quadruped';\\n    engine?: VaultRuntime;\\n    license?: VaultAssetSummary['license'];\\n    source?: VaultAssetSummary['source'];\\n    origin?: VaultAssetSummary['origin'];\\n    creatorId?: string;\\n    rank?: VaultRankMode;\\n    page?: number;\\n    limit?: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultSearchResult", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultSearchResult = {\\n    items: VaultAssetSummary[];\\n    totalItems: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultSelectionExplanation", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultSelectionExplanation = {\\n    rankMode: VaultRankMode;\\n    lexical: {\\n        matchedTerms: string[];\\n        matchedFields: string[];\\n    };\\n    hardFilters: Record<string, unknown>;\\n    performance: {\\n        tier: VaultPerformanceTier | null;\\n        costScore: number | null;\\n        qualityScore: number | null;\\n    };\\n    reuse: {\\n        worldUsageCount: number;\\n        usageCount: number;\\n        lastUsedAt: string | null;\\n    };\\n    availability: {\\n        performanceMeasured: boolean;\\n        qualityMeasured: boolean;\\n        reuseObserved: boolean;\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultSkyMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultSkyMetadata = VaultMetadataBase & {\\n    sky: {\\n        schemaVersion: string;\\n        sourceFormat: 'hdr' | 'exr';\\n        projection: 'equirectangular' | 'cubemap';\\n        colorSpace: 'linear-srgb' | 'acescg';\\n        dynamicRangeStops: number;\\n        exposureEv: number;\\n        resolution: {\\n            width: number;\\n            height: number;\\n        };\\n        backdropRenditions: unknown[];\\n        lightingRenditions: unknown[];\\n        channelsSeparated: true;\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultSplatScope", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultSplatScope = 'object' | 'environment';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultTerrainMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultTerrainMetadata = VaultMetadataBase & {\\n    terrain: {\\n        representation: 'heightmap' | 'mesh';\\n        sourceFormat?: 'png16' | 'raw16' | 'exr' | 'glb';\\n        dimensionsMeters: [number, number, number] | null;\\n        triangleCount?: number | null;\\n        schemaVersion?: string;\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultTextureMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultTextureMetadata = VaultMetadataBase & {\\n    texture: {\\n        semantic: 'albedo' | 'normal' | 'roughness' | 'metallic' | 'ambient-occlusion' | 'emissive' | 'height' | 'mask' | 'unspecified';\\n        colorSpace: 'srgb' | 'linear' | 'unspecified';\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultUnrealPackageMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultUnrealPackageMetadata = VaultMetadataBase;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultUnsupportedRuntimeError", "value_and_type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export class VaultUnsupportedRuntimeError extends Error {\\n    constructor(readonly kind: VaultAssetKind, readonly mimeType: string, reason: string) {\\n        super(`HELIX Vault asset cannot be loaded by the web SDK (${kind}, ${mimeType}): ${reason}`);\\n        this.name = 'VaultUnsupportedRuntimeError';\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "VaultVfxMetadata", "type", "standalone_tooling", "[\n  {\n    \"declaration\": \"export type VaultVfxMetadata = VaultMetadataBase & {\\n    vfx: {\\n        schemaVersion: string;\\n        deviceTier: 'mobile' | 'desktop' | 'cinematic';\\n        effectType: 'particle' | 'beam' | 'trail' | 'flipbook';\\n        boundsMeters: [number, number, number];\\n        portability: 'renderer-neutral-contract-draft';\\n        runtimeCompatibility: VaultRuntime[];\\n        loop: boolean;\\n        maxParticles: number;\\n        drawCalls: number;\\n        decodedTextureMemoryBytes: number;\\n        limits: {\\n            maxParticles: number;\\n            spawnRatePerSecond: number;\\n            lifetimeSeconds: number;\\n            speedMetersPerSecond: number;\\n            sizeMeters: number;\\n            boundsMeters: number;\\n            beamLengthMeters: number;\\n            beamSegments: number;\\n            trailPoints: number;\\n        };\\n        textures: Array<{\\n            role: 'sprite' | 'flipbook' | 'beam' | 'trail' | 'distortion';\\n            artifact: VaultImmutableArtifactReference;\\n            resolvedKind: 'texture' | 'decal';\\n            colorSpace: 'srgb' | 'linear';\\n            frames: {\\n                columns: number;\\n                rows: number;\\n                frameCount: number;\\n                framesPerSecond: number;\\n            } | null;\\n        }>;\\n        particle: {\\n            textureRole: string;\\n            shape: 'point' | 'sphere' | 'box' | 'cone';\\n            spawnRatePerSecond: number;\\n            lifetimeSeconds: [number, number];\\n            speedMetersPerSecond: [number, number];\\n            sizeMeters: [number, number];\\n            blendMode: 'alpha' | 'additive' | 'multiply';\\n            billboard: 'camera' | 'velocity' | 'world';\\n        } | null;\\n        beam: {\\n            textureRole: string;\\n            widthMeters: [number, number];\\n            lengthMeters: [number, number];\\n            maxSegments: number;\\n            noiseAmplitudeMeters: number;\\n            blendMode: 'alpha' | 'additive' | 'multiply';\\n        } | null;\\n        trail: {\\n            textureRole: string;\\n            lifetimeSeconds: number;\\n            widthMeters: [number, number];\\n            maxPoints: number;\\n            minVertexDistanceMeters: number;\\n            blendMode: 'alpha' | 'additive' | 'multiply';\\n        } | null;\\n        flipbook: {\\n            textureRole: string;\\n            sizeMeters: [number, number];\\n            blendMode: 'alpha' | 'additive' | 'multiply';\\n        } | null;\\n    };\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/vault.ts\"\n  }\n]" },
  { "Vec3", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export type Vec3 = {\\n    x: number;\\n    y: number;\\n    z: number;\\n};\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/multiplayer-contract/state.ts\"\n  }\n]" },
  { "VehicleActionEnvelope", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface VehicleActionEnvelope {\\n    entityId: string;\\n    authorityEpoch: number;\\n    seq: number;\\n    buildDigest: string;\\n    targetBits?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "VehicleActionFencesMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface VehicleActionFencesMessage {\\n    entries: Array<{\\n        entityId: string;\\n        authorityEpoch: number;\\n        seq: number;\\n    }>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "VehicleComponentActionRequest", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleComponentActionRequest {\\n    identity: ModuleIdentity;\\n    entityId: string;\\n    action: string;\\n    args?: Record<string, string | number | boolean>;\\n    targetBits?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "VehicleDetachActionDescriptor", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleDetachActionDescriptor {\\n    partId: 'hood';\\n    stateBit: number;\\n    localTransform: {\\n        position: [number, number, number];\\n        rotation: [number, number, number, number];\\n    };\\n    collider: {\\n        shape: 'box';\\n        halfExtents: [number, number, number];\\n    };\\n    massKg: number;\\n    allowedRoles: VehicleRole[];\\n    settleAfterMs: number;\\n    despawnAfterMs: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "VehicleDetachActionRequest", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleDetachActionRequest {\\n    identity: ModuleIdentity;\\n    entityId: string;\\n    actionId: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "VehicleDetachActions", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleDetachActions {\\n    version: 1;\\n    actions: Record<string, VehicleDetachActionDescriptor>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "VehicleEntityRetiredMessage", "type", "multiplayer_handle_type", "[\n  {\n    \"declaration\": \"export interface VehicleEntityRetiredMessage {\\n    entityId: string;\\n    authorityEpoch: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/multiplayer-contract/messages.ts\"\n  }\n]" },
  { "VehiclePackageArtifact", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehiclePackageArtifact {\\n    format: 1;\\n    revision: number;\\n    checksumSha256: string;\\n    package: Record<string, unknown>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "VehicleRole", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type VehicleRole = 'owner' | 'driver' | 'occupant' | 'nearby';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "VehicleSpecialtyComponentInvocation", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleSpecialtyComponentInvocation {\\n    action: string;\\n    targetBits?: number;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/vehicle-specialty-transport.ts\"\n  }\n]" },
  { "VehicleSpecialtyDetachInvocation", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleSpecialtyDetachInvocation {\\n    actionId: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/vehicle-specialty-transport.ts\"\n  }\n]" },
  { "vehicleSpecialtyEntityId", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function vehicleSpecialtyEntityId(placementId: string): string {\\n    if (!UUID.test(placementId))\\n        throw new Error('vehicle specialty placementId is invalid');\\n    return `uv.${placementId.replace(/-/g, '').slice(0, 24).toLowerCase()}`;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/vehicle-specialty-placement.ts\"\n  }\n]" },
  { "VehicleSpecialtyInvocation", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleSpecialtyInvocation {\\n    functionName: string;\\n    args: Readonly<Record<string, unknown>>;\\n    itemInstanceId?: string;\\n    moduleId?: string;\\n    bundleChecksumSha256?: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/vehicle-specialty-transport.ts\"\n  }\n]" },
  { "vehicleSpecialtyPlacementBinding", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function vehicleSpecialtyPlacementBinding(identity: VehicleSpecialtyPlacementIdentity): VehicleSpecialtyPlacementBinding & {\\n    detachActions: VehicleDetachActions | null;\\n} {\\n    if (!identity.itemInstanceId.trim())\\n        throw new Error('vehicle specialty itemInstanceId is required');\\n    if (!SHA256.test(identity.bundleChecksumSha256))\\n        throw new Error('vehicle specialty bundle checksum is invalid');\\n    if (!Number.isSafeInteger(identity.revision) || identity.revision < 1)\\n        throw new Error('vehicle specialty revision is invalid');\\n    if (identity.stateVars.some((name) => !/^[A-Za-z][A-Za-z0-9_]{0,63}$/.test(name))) {\\n        throw new Error('vehicle specialty stateVars contains an invalid name');\\n    }\\n    return {\\n        placementId: identity.placementId,\\n        itemInstanceId: identity.itemInstanceId,\\n        moduleId: vehicleSpecialtyRuntimeModuleId(identity.bundleId, identity.placementId),\\n        entityId: vehicleSpecialtyEntityId(identity.placementId),\\n        bundleChecksumSha256: identity.bundleChecksumSha256,\\n        revision: identity.revision,\\n        stateVars: [...identity.stateVars],\\n        detachActions: detachActions(identity.detachActions),\\n    };\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/vehicle-specialty-placement.ts\"\n  }\n]" },
  { "VehicleSpecialtyPlacementBinding", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleSpecialtyPlacementBinding extends VehicleSpecialtyRoomBinding {\\n    placementId: string;\\n    entityId: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/vehicle-specialty-placement.ts\"\n  }\n]" },
  { "VehicleSpecialtyPlacementIdentity", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleSpecialtyPlacementIdentity {\\n    placementId: string;\\n    itemInstanceId: string;\\n    bundleId: string;\\n    bundleChecksumSha256: string;\\n    revision: number;\\n    stateVars: readonly string[];\\n    detachActions?: VehicleDetachActions | null;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/vehicle-specialty-placement.ts\"\n  }\n]" },
  { "VehicleSpecialtyPresentationEffect", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleSpecialtyPresentationEffect {\\n    moduleId: string;\\n    commandId: string;\\n    index: number;\\n    serverTick: number;\\n    event: string;\\n    payload: Readonly<Record<string, unknown>>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/vehicle-specialty-transport.ts\"\n  }\n]" },
  { "VehicleSpecialtyRoomBinding", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleSpecialtyRoomBinding {\\n    itemInstanceId?: string;\\n    moduleId: string;\\n    entityId?: string;\\n    bundleChecksumSha256: string;\\n    revision: number;\\n    stateVars: readonly string[];\\n    detachActions?: VehicleDetachActions | null;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/vehicle-specialty-transport.ts\"\n  }\n]" },
  { "VehicleSpecialtyRoomTransport", "value_and_type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export class VehicleSpecialtyRoomTransport {\\n    readonly #room: VehicleSpecialtyRoom;\\n    readonly #binding: VehicleSpecialtyRoomBinding;\\n    readonly #detachActionIds: readonly string[];\\n    readonly #stateSubscribers = new Set<StateSubscriber>();\\n    readonly #effectSubscribers = new Set<EffectSubscriber>();\\n    readonly #seenEffects = new Set<string>();\\n    readonly #roomUnsubscribers: Array<() => void> = [];\\n    #revision = 0;\\n    #fingerprint = '';\\n    #latest: VehicleSpecialtyStateSnapshot | null = null;\\n    #disposed = false;\\n    constructor(room: VehicleSpecialtyRoom, binding: VehicleSpecialtyRoomBinding) {\\n        this.#room = room;\\n        this.#binding = {\\n            ...binding,\\n            stateVars: [...binding.stateVars],\\n            detachActions: binding.detachActions,\\n        };\\n        this.#detachActionIds = Object.freeze(Object.keys(binding.detachActions?.actions ?? {}));\\n        this.#capture();\\n        const stateUnsubscribe = room.onStateChange(() => {\\n            if (!this.#disposed)\\n                this.#capture();\\n        });\\n        const effectUnsubscribe = room.onMessage('moduleEffect', (value) => {\\n            if (!this.#disposed)\\n                this.#effect(value);\\n        });\\n        if (typeof stateUnsubscribe === 'function')\\n            this.#roomUnsubscribers.push(stateUnsubscribe);\\n        if (typeof effectUnsubscribe === 'function')\\n            this.#roomUnsubscribers.push(effectUnsubscribe);\\n    }\\n    invoke(invocation: VehicleSpecialtyInvocation): void {\\n        if (this.#disposed)\\n            throw new Error('Vehicle specialty transport is disposed');\\n        const args: Record<string, string | number | boolean> = {};\\n        for (const [name, value] of Object.entries(invocation.args)) {\\n            if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')\\n                args[name] = value;\\n        }\\n        this.#room.sendModuleAction({\\n            identity: {\\n                ...(this.#binding.itemInstanceId ? { itemInstanceId: this.#binding.itemInstanceId } : {}),\\n                moduleId: this.#binding.moduleId,\\n                bundleChecksumSha256: this.#binding.bundleChecksumSha256,\\n                revision: this.#binding.revision,\\n            },\\n            action: invocation.functionName,\\n            args,\\n        });\\n    }\\n    detachActionIds(): readonly string[] {\\n        return [...this.#detachActionIds];\\n    }\\n    invokeDetach(invocation: VehicleSpecialtyDetachInvocation): boolean {\\n        if (this.#disposed)\\n            throw new Error('Vehicle specialty transport is disposed');\\n        if (!this.#binding.entityId || !this.#detachActionIds.includes(invocation.actionId) ||\\n            typeof this.#room.sendVehicleDetachAction !== 'function')\\n            return false;\\n        return this.#room.sendVehicleDetachAction({\\n            identity: {\\n                ...(this.#binding.itemInstanceId ? { itemInstanceId: this.#binding.itemInstanceId } : {}),\\n                moduleId: this.#binding.moduleId,\\n                bundleChecksumSha256: this.#binding.bundleChecksumSha256,\\n                revision: this.#binding.revision,\\n            },\\n            entityId: this.#binding.entityId,\\n            actionId: invocation.actionId,\\n        });\\n    }\\n    invokeComponent(invocation: VehicleSpecialtyComponentInvocation): boolean {\\n        if (this.#disposed ||\\n            !this.#binding.entityId ||\\n            typeof this.#room.sendVehicleComponentAction !== 'function' ||\\n            !VEHICLE_COMPONENT_ACTION.test(invocation.action) ||\\n            (invocation.targetBits !== undefined && (!Number.isSafeInteger(invocation.targetBits) ||\\n                invocation.targetBits < 0 ||\\n                invocation.targetBits > 0xffff)))\\n            return false;\\n        return this.#room.sendVehicleComponentAction({\\n            identity: {\\n                ...(this.#binding.itemInstanceId ? { itemInstanceId: this.#binding.itemInstanceId } : {}),\\n     "
    "           moduleId: this.#binding.moduleId,\\n                bundleChecksumSha256: this.#binding.bundleChecksumSha256,\\n                revision: this.#binding.revision,\\n            },\\n            entityId: this.#binding.entityId,\\n            action: invocation.action,\\n            ...(invocation.targetBits === undefined ? {} : { targetBits: invocation.targetBits }),\\n        });\\n    }\\n    subscribeState(subscriber: StateSubscriber): () => void {\\n        if (this.#disposed)\\n            return () => undefined;\\n        this.#stateSubscribers.add(subscriber);\\n        if (this.#latest)\\n            subscriber(this.#latest, { initial: true });\\n        return () => void this.#stateSubscribers.delete(subscriber);\\n    }\\n    subscribeEffect(subscriber: EffectSubscriber): () => void {\\n        if (this.#disposed)\\n            return () => undefined;\\n        this.#effectSubscribers.add(subscriber);\\n        return () => void this.#effectSubscribers.delete(subscriber);\\n    }\\n    snapshot(): VehicleSpecialtyStateSnapshot | null {\\n        return this.#latest ? { ...this.#latest, vars: { ...this.#latest.vars } } : null;\\n    }\\n    dispose(): void {\\n        if (this.#disposed)\\n            return;\\n        this.#disposed = true;\\n        for (const unsubscribe of this.#roomUnsubscribers.splice(0))\\n            unsubscribe();\\n        this.#stateSubscribers.clear();\\n        this.#effectSubscribers.clear();\\n        this.#seenEffects.clear();\\n        this.#latest = null;\\n    }\\n    #capture(): void {\\n        const vars: Record<string, unknown> = {};\\n        const view = this.#room.module(this.#binding.moduleId).vars;\\n        for (const name of this.#binding.stateVars)\\n            vars[name] = view.raw(name);\\n        const fingerprint = JSON.stringify(vars);\\n        if (fingerprint === this.#fingerprint && this.#latest)\\n            return;\\n        this.#fingerprint = fingerprint;\\n        this.#latest = {\\n            ...(this.#binding.itemInstanceId ? { itemInstanceId: this.#binding.itemInstanceId } : {}),\\n            moduleId: this.#binding.moduleId,\\n            bundleChecksumSha256: this.#binding.bundleChecksumSha256,\\n            revision: ++this.#revision,\\n            serverTick: this.#room.state.serverTick,\\n            vars,\\n        };\\n        for (const subscriber of this.#stateSubscribers)\\n            subscriber(this.#latest, { initial: false });\\n    }\\n    #effect(value: unknown): void {\\n        if (!isRecord(value) || value.moduleId !== this.#binding.moduleId)\\n            return;\\n        if (typeof value.commandId !== 'string' || !Number.isSafeInteger(value.index) ||\\n            typeof value.serverTick !== 'number' || typeof value.event !== 'string' || !isRecord(value.payload))\\n            return;\\n        const key = `${value.commandId}:${value.index}`;\\n        if (this.#seenEffects.has(key))\\n            return;\\n        if (this.#seenEffects.size >= MAX_SEEN_EFFECTS) {\\n            const oldest = this.#seenEffects.values().next().value as string | undefined;\\n            if (oldest !== undefined)\\n                this.#seenEffects.delete(oldest);\\n        }\\n        this.#seenEffects.add(key);\\n        const effect = value as unknown as VehicleSpecialtyPresentationEffect;\\n        for (const subscriber of this.#effectSubscribers)\\n            subscriber(effect);\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/vehicle-specialty-transport.ts\"\n  }\n]" },
  { "vehicleSpecialtyRuntimeModuleId", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function vehicleSpecialtyRuntimeModuleId(bundleId: string, placementId: string): string {\\n    if (!BUNDLE.test(bundleId))\\n        throw new Error('vehicle specialty bundleId is invalid');\\n    if (!UUID.test(placementId))\\n        throw new Error('vehicle specialty placementId is invalid');\\n    const safeSlug = bundleId.replace(/[^a-z0-9-]/g, '').slice(0, 13) || 'item';\\n    return `itx.${safeSlug}.${placementId.replace(/-/g, '').slice(0, 12).toLowerCase()}`;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/vehicle-specialty-placement.ts\"\n  }\n]" },
  { "VehicleSpecialtyStateSnapshot", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VehicleSpecialtyStateSnapshot {\\n    itemInstanceId?: string;\\n    moduleId: string;\\n    bundleChecksumSha256: string;\\n    revision: number;\\n    serverTick: number;\\n    vars: Readonly<Record<string, unknown>>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/vehicle-specialty-transport.ts\"\n  }\n]" },
  { "VerbBinding", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VerbBinding {\\n    action: StandardModeAction;\\n    label: string;\\n    touch: TouchPresentation;\\n    continuous?: boolean;\\n    repeatMs?: number;\\n    disabled?: boolean;\\n    disabledReason?: string;\\n    exclusiveGroup?: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "VerbEvent", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface VerbEvent {\\n    phase: VerbPhase;\\n    value?: number;\\n    vector?: {\\n        x: number;\\n        y: number;\\n    };\\n    at?: {\\n        x: number;\\n        y: number;\\n    };\\n    heldMs?: number;\\n    source: 'key' | 'pointer' | 'touch' | 'gamepad' | 'ui' | 'script';\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "VerbHandler", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type VerbHandler = (event: VerbEvent, verb: string) => void;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "VerbPhase", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type VerbPhase = 'start' | 'end' | 'repeat';\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "VerbSink", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type VerbSink = (verb: string, event: VerbEvent) => void;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/interaction-mode.ts\"\n  }\n]" },
  { "WorldDeviceDefinitionResolver", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export type WorldDeviceDefinitionResolver = (reference: DeviceDefinitionReference) => Promise<DeviceDefinitionV1>;\",\n    \"kind\": \"TypeAliasDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "WorldDeviceHost", "value_and_type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export class WorldDeviceHost {\\n    readonly #presentations = new Map<string, WorldDevicePresentation>();\\n    readonly #unsubscribers: Array<() => void> = [];\\n    #disposed = false;\\n    #serverOffsetMs = 0;\\n    #clockAnchored = false;\\n    constructor(readonly room: Pick<HelixRoom, 'state' | 'module' | 'onStateChange' | 'sendAction'>, readonly adapter: WorldDevicePresentationAdapter, readonly resolveDefinition: WorldDeviceDefinitionResolver) {\\n        this.#sampleClock();\\n    }\\n    now = (): number => Date.now() + this.#serverOffsetMs;\\n    async mount(spawn: WorldDeviceMount): Promise<boolean> {\\n        if (this.#disposed)\\n            throw new Error('World Device host is disposed');\\n        const reference = spawn.deviceDefinition;\\n        if (!reference)\\n            return false;\\n        const definition = await this.resolveDefinition(reference);\\n        if (definition.format !== 'helix.device' ||\\n            definition.formatVersion !== 1 ||\\n            definition.id !== reference.id ||\\n            definition.version !== reference.version) {\\n            throw new Error(`Device definition identity mismatch for ${reference.id}@${reference.version}`);\\n        }\\n        if (definition.compatibility &&\\n            !definition.compatibility.hosts.includes('world')) {\\n            throw new Error(`Device ${definition.id} does not support World hosts`);\\n        }\\n        const requestedCapabilities = new Set([\\n            ...(definition.compatibility?.requiredCapabilities ?? []),\\n            ...(definition.capabilities ?? []),\\n        ]);\\n        for (const capability of requestedCapabilities) {\\n            if (!PLATFORM_DEVICE_CAPABILITIES.has(capability) &&\\n                !this.adapter.capabilities.has(capability)) {\\n                throw new Error(`World Device host is missing capability ${capability}`);\\n            }\\n        }\\n        for (const interaction of definition.interactions) {\\n            const target = interaction.presentation;\\n            if (target === undefined)\\n                continue;\\n            if (!target || target.kind !== 'webPanel' || typeof target.app !== 'string' || !target.app || target.app.length > 64 ||\\n                Object.keys(target).some(key => key !== 'kind' && key !== 'app')) {\\n                throw new Error('Device interaction presentation must name a declared webPanel app');\\n            }\\n            if (!requestedCapabilities.has('app.web.panel'))\\n                throw new Error('Device webPanel requires app.web.panel capability');\\n            const raw = interaction as unknown as Record<string, unknown>;\\n            if (raw.action !== undefined || interaction.control !== undefined || raw.surface === 'internal') {\\n                throw new Error('Device webPanel cannot declare action, control or internal surface');\\n            }\\n            const app = definition.apps?.[target.app];\\n            if (!app || !['localWeb', 'remoteWeb'].includes(app.type) || !app.entry) {\\n                throw new Error('Device webPanel requires a declared localWeb or remoteWeb entry');\\n            }\\n            if (!requestedCapabilities.has(app.type === 'remoteWeb' ? 'app.web.remote' : 'app.web.local')) {\\n                throw new Error('Device webPanel app capability is missing');\\n            }\\n            if (app.type === 'remoteWeb') {\\n                const url = new URL(app.entry);\\n                if (url.protocol !== 'https:' || url.username || url.password || !app.allowedOrigins?.includes(url.origin) ||\\n                    app.allowedOrigins.some(origin => { try {\\n                        const allowed = new URL(origin);\\n                        return allowed.protocol !== 'https:' || allowed.origin !== origin;\\n                    }\\n                    catch {\\n                        return true;\\n                    } })) {\\n                    throw new Error('Device webPanel requires a declared HTTPS origin without credentials');\\n                }\\n            }\\n            else {\\n                const "
    "path = new URL(app.entry, 'https://device-host.invalid');\\n                if (!app.entry.startsWith('/device-apps/') || app.entry.includes('\\\\\\\\') || app.entry.split(/[/?#]/).includes('..') ||\\n                    !/^\\\\/device-apps\\\\/[A-Za-z0-9][A-Za-z0-9/_.-]*$/.test(path.pathname) || path.origin !== 'https://device-host.invalid' ||\\n                    decodeURIComponent(path.pathname) !== path.pathname || app.allowedOrigins !== undefined) {\\n                    throw new Error('Device webPanel local entry must remain within /device-apps/');\\n                }\\n            }\\n            const graph = definition.graph as {\\n                triggers?: Array<{\\n                    on?: string;\\n                    interaction?: string;\\n                }>;\\n            } | undefined;\\n            if (graph?.triggers?.some(trigger => trigger.on === 'interact' && trigger.interaction === interaction.id)) {\\n                throw new Error('Device webPanel cannot trigger a state graph');\\n            }\\n        }\\n        const moduleId = deviceRuntimeModuleId(definition.id, spawn.placementId);\\n        const presentation = await this.adapter.mount({\\n            spawn,\\n            definition,\\n            now: this.now,\\n            interact: (interactionId, args = {}) => {\\n                if (definition.interactions.find(interaction => interaction.id === interactionId)?.presentation) {\\n                    throw new Error('Device webPanel is viewer-local and cannot be sent as a room action');\\n                }\\n                this.room.sendAction(interactionId, args, moduleId);\\n            },\\n        });\\n        if (this.#disposed) {\\n            await presentation.dispose();\\n            return false;\\n        }\\n        this.#presentations.set(spawn.placementId, presentation);\\n        const sync = () => {\\n            this.#sampleClock();\\n            const vars = this.room.module(moduleId).vars;\\n            presentation.applyState(Object.fromEntries(Object.keys(definition.state).map((name) => [name, vars.raw(name)])));\\n        };\\n        sync();\\n        const unsubscribe = this.room.onStateChange(sync);\\n        if (typeof unsubscribe === 'function')\\n            this.#unsubscribers.push(unsubscribe);\\n        return true;\\n    }\\n    async dispose(): Promise<void> {\\n        if (this.#disposed)\\n            return;\\n        this.#disposed = true;\\n        for (const unsubscribe of this.#unsubscribers.splice(0))\\n            unsubscribe();\\n        for (const presentation of this.#presentations.values()) {\\n            await presentation.dispose();\\n        }\\n        this.#presentations.clear();\\n    }\\n    #sampleClock(): void {\\n        const serverTimeMs = Number(this.room.state.serverTimeMs);\\n        if (Number.isFinite(serverTimeMs) && serverTimeMs > 0) {\\n            const sample = serverTimeMs - Date.now();\\n            if (!this.#clockAnchored) {\\n                this.#serverOffsetMs = sample;\\n                this.#clockAnchored = true;\\n                return;\\n            }\\n            const correction = Math.max(-250, Math.min(250, sample - this.#serverOffsetMs));\\n            this.#serverOffsetMs += correction * 0.2;\\n        }\\n    }\\n}\",\n    \"kind\": \"ClassDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "WorldDevicePresentation", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface WorldDevicePresentation {\\n    applyState(state: Readonly<Record<string, unknown>>): void;\\n    dispose(): void | Promise<void>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "WorldDevicePresentationAdapter", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface WorldDevicePresentationAdapter {\\n    readonly capabilities: ReadonlySet<string>;\\n    mount(input: {\\n        spawn: WorldDeviceMount;\\n        definition: DeviceDefinitionV1;\\n        now: () => number;\\n        interact: (interactionId: string, args?: Record<string, RoomVarValue>) => void;\\n    }): WorldDevicePresentation | Promise<WorldDevicePresentation>;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "worldDeviceRuntimeModuleId", "value", "implementation_symbol", "[\n  {\n    \"declaration\": \"export function deviceRuntimeModuleId(definitionId: string, placementId: string): string {\\n    const slug = definitionId.replace(/[^a-z0-9-]/g, '').slice(0, 13) || 'device';\\n    const identity = placementId.replace(/-/g, '').slice(0, 12).toLowerCase();\\n    return `dev.${slug}.${identity}`;\\n}\",\n    \"kind\": \"FunctionDeclaration\",\n    \"source\": \"src/devices.ts\"\n  }\n]" },
  { "WorldSpawn", "type", "implementation_symbol", "[\n  {\n    \"declaration\": \"export interface WorldSpawn {\\n    placementId: string;\\n    instanceId: string;\\n    itemId: string;\\n    worldId: string;\\n    ownerUserId: string;\\n    ownerUsername: string | null;\\n    kind: string;\\n    usage: string;\\n    name: string;\\n    thumbnailUrl: string | null;\\n    modelUrl: string | null;\\n    vehiclePackage: VehiclePackageArtifact | null;\\n    deviceDefinition: {\\n        id: string;\\n        version: string;\\n    } | null;\\n    transform: Record<string, unknown>;\\n    state: Record<string, unknown>;\\n    spawnedAt: string;\\n}\",\n    \"kind\": \"InterfaceDeclaration\",\n    \"source\": \"src/universal-vehicles.ts\"\n  }\n]" },
  { "XR_INTERACTION_PROMPT_EVENT", "value", "runtime_facade", "[\n  {\n    \"declaration\": \"const XR_INTERACTION_PROMPT_EVENT = 'helix:interaction-prompt';\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
  { "XR_SESSION_EVENT", "value", "runtime_facade", "[\n  {\n    \"declaration\": \"const XR_SESSION_EVENT = 'helix:xr-session';\",\n    \"kind\": \"VariableDeclaration\",\n    \"source\": \"src/protocol.ts\"\n  }\n]" },
}};

inline constexpr std::string_view AuthorityProfilesJson = "{\n  \"client\": {\n    \"description\": \"A player runtime launched by the HELIX shell. Platform credentials remain in the shell.\",\n    \"trust\": \"untrusted_player\"\n  },\n  \"listen\": {\n    \"description\": \"A player-owned host. It never receives managed workload authority.\",\n    \"trust\": \"untrusted_player_host\"\n  },\n  \"managed_server\": {\n    \"description\": \"A HELIX-managed workload with short-lived World, Build, and Instance-bound authority.\",\n    \"trust\": \"trusted_allocation_workload\"\n  },\n  \"preview\": {\n    \"description\": \"Local creator preview. Mutating platform calls may simulate or report unavailable.\",\n    \"trust\": \"untrusted_preview\"\n  }\n}";
inline constexpr std::string_view CapabilitiesJson = "{\n  \"auth.profile\": {\n    \"description\": \"Read the current world-session profile.\",\n    \"status\": \"enforced\"\n  },\n  \"camera.capture\": {\n    \"description\": \"Save a world-captured image to the player's album.\",\n    \"status\": \"enforced\"\n  },\n  \"camera.control\": {\n    \"description\": \"Let a WORLD SCRIPT drive the player's native camera (mode, lens, filter, timer, shutter). Deliberately NOT required by the native camera itself: HELIX OS opens that as a free avatar ability and pushes helix:camera-state without consulting the world manifest, so a world cannot take the player's camera away by omitting a scope. This gates only the reverse act — a world reaching for controls the player did not touch. It is also NOT camera.capture, which is about writing an image to the player's album; pointing the camera and saving what it saw are separate permissions on purpose.\",\n    \"status\": \"enforced\"\n  },\n  \"multiplayer\": {\n    \"description\": \"Reserve and join the declared multiplayer provider.\",\n    \"status\": \"enforced\"\n  },\n  \"voice.proximity\": {\n    \"description\": \"Use positional voice metadata.\",\n    \"status\": \"enforced\"\n  },\n  \"voice.room\": {\n    \"description\": \"Join room voice.\",\n    \"status\": \"enforced\"\n  }\n}";
inline constexpr std::string_view StableErrorsJson = "{\n  \"AUTH_REQUIRED\": \"A signed-in player session is required.\",\n  \"BACKEND_UNAVAILABLE\": \"The authoritative service could not be reached; clients must not fabricate a success or zero value.\",\n  \"CAPABILITY_DENIED\": \"The World manifest does not grant the required capability.\",\n  \"CONFLICT\": \"The request conflicts with current versioned state.\",\n  \"CORRECTION_REQUIRED\": \"The audited Web behavior is not safe to canonize across runtimes.\",\n  \"INVALID_ARGUMENT\": \"The request failed deterministic local or platform validation.\",\n  \"RATE_LIMITED\": \"The caller exceeded the platform rate policy.\",\n  \"REQUIRES_MANAGED_AUTHORITY\": \"The operation requires a HELIX-managed workload.\",\n  \"RUNTIME_CAPABILITY_UNAVAILABLE\": \"The runtime reported at run time that it cannot perform this operation (see camera.capabilities). Distinct from UNAVAILABLE, which is a STATIC claim about a method on a runtime: this is a live fact that can change back, so a caller disables the control and keeps listening rather than concluding the method does not exist.\",\n  \"TIMEOUT\": \"The result is unresolved; retry with the same idempotency key when one exists.\",\n  \"UNAVAILABLE\": \"The service is not implemented for this runtime or profile.\"\n}";
inline constexpr std::string_view PurchaseStatusMeaningsJson = "{\n  \"AlreadyOwned\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": true\n  },\n  \"Cancelled\": {\n    \"money\": \"unknown\",\n    \"ownsAfter\": false\n  },\n  \"Claimed\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": true\n  },\n  \"Failed\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": false\n  },\n  \"Granted\": {\n    \"money\": \"charged\",\n    \"ownsAfter\": true\n  },\n  \"InsufficientFunds\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": false\n  },\n  \"MaxPerUserReached\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": false\n  },\n  \"NotFound\": {\n    \"money\": \"unknown\",\n    \"ownsAfter\": false\n  },\n  \"NotInWorld\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": false\n  },\n  \"Pending\": {\n    \"money\": \"unknown\",\n    \"ownsAfter\": false\n  },\n  \"PriceChanged\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": false\n  },\n  \"ProductInactive\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": false\n  },\n  \"ProductNotFound\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": false\n  },\n  \"RateLimited\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": false\n  },\n  \"Timeout\": {\n    \"money\": \"unknown\",\n    \"ownsAfter\": false\n  },\n  \"Unauthorized\": {\n    \"money\": \"not_charged\",\n    \"ownsAfter\": false\n  }\n}";
inline constexpr std::string_view TypesJson = "{\n  \"enums\": {\n    \"Authority\": [\n      \"client\",\n      \"shell_player\",\n      \"platform\",\n      \"world_server\",\n      \"profile_dependent\"\n    ],\n    \"AuthorityProfile\": [\n      \"client\",\n      \"preview\",\n      \"listen\",\n      \"managed_server\"\n    ],\n    \"Availability\": [\n      \"available\",\n      \"conditional\",\n      \"unavailable\",\n      \"correction_required\"\n    ],\n    \"CameraAspect\": [\n      \"portrait\",\n      \"landscape\",\n      \"square\",\n      \"free\"\n    ],\n    \"CameraControlTarget\": [\n      \"camera\",\n      \"avatar\"\n    ],\n    \"CameraDroneLockMode\": [\n      \"free\",\n      \"lock\",\n      \"orbit\"\n    ],\n    \"CameraFilterId\": [\n      \"original\",\n      \"vivid\",\n      \"warm\",\n      \"cool\",\n      \"mono\"\n    ],\n    \"CameraLensPreset\": [\n      0.5,\n      1,\n      2,\n      3,\n      5\n    ],\n    \"CameraMediaMode\": [\n      \"photo\",\n      \"video\"\n    ],\n    \"CameraSessionState\": [\n      \"inactive\",\n      \"device-hold\",\n      \"rear\",\n      \"selfie\",\n      \"drone\"\n    ],\n    \"CameraSpatialMode\": [\n      \"rear\",\n      \"selfie\",\n      \"drone\"\n    ],\n    \"CameraTimerSeconds\": [\n      0,\n      3,\n      10\n    ],\n    \"HelixDeviceFormFactor\": [\n      \"phone\",\n      \"tablet\"\n    ],\n    \"HelixMatchmakingErrorCode\": [\n      \"unknown-queue\",\n      \"already-queued\",\n      \"already-matched\",\n      \"not-party-leader\",\n      \"party-too-large\",\n      \"party-changed\",\n      \"guests-cannot-queue\",\n      \"rate-limited\",\n      \"missing-permission\",\n      \"unavailable\",\n      \"not-ready\",\n      \"invalid-argument\",\n      \"request-failed\"\n    ],\n    \"HelixNotificationKind\": [\n      \"success\",\n      \"failure\",\n      \"notification\",\n      \"message\"\n    ],\n    \"HelixPartyErrorCode\": [\n      \"not-party-leader\",\n      \"cannot-invite\",\n      \"party-full\",\n      \"too-many-invites\",\n      \"already-in-party\",\n      \"party-changed\",\n      \"not-in-party\",\n      \"unknown-party-member\",\n      \"invite-not-found\",\n      \"invite-expired\",\n      \"code-not-found\",\n      \"guests-cannot-party\",\n      \"rate-limited\",\n      \"missing-permission\",\n      \"unavailable\",\n      \"not-ready\",\n      \"invalid-argument\",\n      \"request-failed\"\n    ],\n    \"HelixPromptState\": [\n      \"default\",\n      \"available\",\n      \"locked\",\n      \"busy\"\n    ],\n    \"HelixVoiceMicMode\": [\n      \"ptt\",\n      \"open\",\n      \"muted\"\n    ],\n    \"HelixVoicePermission\": [\n      \"prompt\",\n      \"granted\",\n      \"denied\"\n    ],\n    \"LeaderboardOrder\": [\n      \"desc\",\n      \"asc\"\n    ],\n    \"PurchaseStatus\": [\n      \"Pending\",\n      \"Granted\",\n      \"Claimed\",\n      \"AlreadyOwned\",\n      \"InsufficientFunds\",\n      \"MaxPerUserReached\",\n      \"ProductInactive\",\n      \"ProductNotFound\",\n      \"NotInWorld\",\n      \"Unauthorized\",\n      \"RateLimited\",\n      \"Cancelled\",\n      \"Failed\",\n      \"Timeout\",\n      \"NotFound\",\n      \"PriceChanged\"\n    ],\n    \"QueueEndReason\": [\n      \"cancelled\",\n      \"timeout\",\n      \"heartbeat-lapsed\",\n      \"member-absent\",\n      \"party-changed\",\n      \"build-changed\",\n      \"queue-removed\",\n      \"replaced\",\n      \"ended\",\n      \"heartbeat-lost\",\n      \"match-expired\",\n      \"refused\",\n      \"session-changed\",\n      \"left\"\n    ],\n    \"QueueState\": [\n      \"none\",\n      \"waiting\",\n      \"matched\"\n    ],\n    \"TransportOwner\": [\n      \"local\",\n      \"shell\",\n      \"direct\",\n      \"network_provider\",\n      \"voice_provider\"\n    ],\n    \"VaultRuntime\": [\n      \"web\",\n      \"unreal\"\n    ]\n  },\n  \"records\": {\n    \"AchievementListResult\": {\n      \"fields\": {\n        \"achievements\": \"AchievementSummary[]\",\n        \"earned\": \"number\",\n        \"total\": \"number\"\n      }\n    },\n    \"AchievementMineResult\": {\n      \"fields\": {\n        \"achievements\": \"AchievementSummary[]\"\n      }\n    },\n    \"AvatarComposition\": {\n      \"fields\": {\n        \"appearance\": \"object\",\n        \"appearanceDigest\": \"string\",\n        \"base\": \"object\",\n        \"colorOverrides\": \"object\",\n        \"compositionDigest\": \"string\",\n        \"fill\": \"all|each?\",\n        \"hiddenSlotIds\": \"string[]\",\n        \"hostKind\": \"character\",\n        \"instanceThumbnailUrl\": \"string|null\",\n        \"itemId\": \"string\",\n        \"materialOverrides\": \"objec"
    "t\",\n        \"materials\": \"object\",\n        \"modelUrl\": \"string|null\",\n        \"mountSocket\": \"string|null?\",\n        \"slotId\": \"string\",\n        \"visibleAddOns\": \"object[]\",\n        \"visualOps\": \"unknown[]\"\n      }\n    },\n    \"Balance\": {\n      \"fields\": {\n        \"coins\": \"number\",\n        \"lix\": \"number\",\n        \"updatedAt\": \"string?\"\n      }\n    },\n    \"CameraAim\": {\n      \"fields\": {\n        \"pitch\": \"number\",\n        \"yaw\": \"number\"\n      }\n    },\n    \"CameraFocusPoint\": {\n      \"fields\": {\n        \"x\": \"number\",\n        \"y\": \"number\"\n      }\n    },\n    \"CameraVector3\": {\n      \"fields\": {\n        \"x\": \"number\",\n        \"y\": \"number\",\n        \"z\": \"number\"\n      }\n    },\n    \"DataStoreListPage\": {\n      \"fields\": {\n        \"keys\": \"string[]\",\n        \"nextCursor\": \"string?\"\n      }\n    },\n    \"DataStoreListPayload\": {\n      \"fields\": {\n        \"cursor\": \"string?\",\n        \"limit\": \"integer?\",\n        \"prefix\": \"string?\"\n      }\n    },\n    \"EquippedAvatar\": {\n      \"fields\": {\n        \"composition\": \"AvatarComposition|null?\",\n        \"contentHash\": \"string|null?\",\n        \"glbUrl\": \"string|null\",\n        \"inventoryItemId\": \"string|null?\",\n        \"itemId\": \"string|null\",\n        \"skeleton\": \"string|null\",\n        \"source\": \"equipped|auto|default|trial\"\n      }\n    },\n    \"EquippedEmote\": {\n      \"fields\": {\n        \"audio\": \"string?\",\n        \"clip\": \"string\",\n        \"itemId\": \"string\",\n        \"label\": \"string?\",\n        \"playback\": \"oneshot|loop\",\n        \"slot\": \"r0|r1|r2|r3|r4|r5|r6|r7|sit|lie\"\n      }\n    },\n    \"EquippedEmotes\": {\n      \"fields\": {\n        \"emotes\": \"EquippedEmote[]\"\n      }\n    },\n    \"HelixCameraCapability\": {\n      \"fields\": {\n        \"drone\": \"boolean\",\n        \"exposureBias\": \"boolean\",\n        \"focusPoint\": \"boolean\",\n        \"photo\": \"boolean\",\n        \"twoHandPose\": \"boolean\",\n        \"unavailableReason\": \"string?\",\n        \"video\": \"boolean\",\n        \"worldAudio\": \"boolean\"\n      }\n    },\n    \"HelixCameraControl\": {\n      \"fields\": {\n        \"aim\": \"CameraAim?\",\n        \"controlTarget\": \"CameraControlTarget?\",\n        \"exposureBias\": \"number?\",\n        \"filter\": \"CameraFilterId?\",\n        \"focusPoint\": \"CameraFocusPoint?\",\n        \"media\": \"CameraMediaMode?\",\n        \"recording\": \"boolean?\",\n        \"session\": \"CameraSessionState?\",\n        \"shutter\": \"boolean?\",\n        \"spatial\": \"CameraSpatialMode?\",\n        \"timerSeconds\": \"CameraTimerSeconds?\",\n        \"worldAudio\": \"boolean?\",\n        \"zoom\": \"number?\"\n      }\n    },\n    \"HelixCameraDroneCommand\": {\n      \"fields\": {\n        \"interpolationSeconds\": \"number?\",\n        \"lockMode\": \"CameraDroneLockMode?\",\n        \"returnToAvatar\": \"boolean?\",\n        \"subjectUserId\": \"string?\",\n        \"transform\": \"HelixCameraDroneTransform?\",\n        \"velocity\": \"CameraVector3?\"\n      }\n    },\n    \"HelixCameraDroneState\": {\n      \"fields\": {\n        \"droneId\": \"string\",\n        \"interpolationSeconds\": \"number\",\n        \"lockMode\": \"CameraDroneLockMode\",\n        \"returnDistance\": \"number\",\n        \"returning\": \"boolean\",\n        \"subjectUserId\": \"string\",\n        \"transform\": \"HelixCameraDroneTransform\",\n        \"velocity\": \"CameraVector3\"\n      }\n    },\n    \"HelixCameraDroneTransform\": {\n      \"fields\": {\n        \"pitch\": \"number\",\n        \"position\": \"CameraVector3\",\n        \"roll\": \"number\",\n        \"yaw\": \"number\"\n      }\n    },\n    \"HelixCameraShutter\": {\n      \"fields\": {\n        \"recording\": \"boolean\",\n        \"sequence\": \"integer\",\n        \"timerRemainingSeconds\": \"number\"\n      }\n    },\n    \"HelixCameraState\": {\n      \"fields\": {\n        \"aim\": \"CameraAim\",\n        \"capability\": \"HelixCameraCapability\",\n        \"controlTarget\": \"CameraControlTarget\",\n        \"drone\": \"HelixCameraDroneState?\",\n        \"exposureBias\": \"number?\",\n        \"filter\": \"CameraFilterId\",\n        \"focusPoint\": \"CameraFocusPoint?\",\n        \"lens\": \"CameraLensPreset\",\n        \"media\": \"CameraMediaMode\",\n        \"session\": \"CameraSessionState\",\n        \"shutter\": \"HelixCameraShutter\",\n        \"spatial\": \"CameraSpatialMode\",\n        \"timerSeconds\": \"CameraTimerSeconds"
    "\",\n        \"zoom\": \"number\"\n      }\n    },\n    \"HelixInitResult\": {\n      \"fields\": {\n        \"customizerSource\": \"PackageCustomizerSource|null\",\n        \"customizerSubject\": \"PackageCustomizerSubject|null\",\n        \"embedded\": \"boolean\",\n        \"runtimeFidelity\": \"RuntimeFidelityIntent|null\",\n        \"user\": \"HelixUser|null\",\n        \"world\": \"HelixWorldContext|null\"\n      }\n    },\n    \"HelixMultiplayerState\": {\n      \"fields\": {\n        \"maxPlayers\": \"number|null\",\n        \"playerCount\": \"number\",\n        \"players\": \"HelixMultiplayerRosterEntry[]\",\n        \"roomId\": \"string\",\n        \"roomType\": \"string?\",\n        \"sessionId\": \"string\",\n        \"ticketed\": \"boolean?\"\n      }\n    },\n    \"HelixPresenceActivity\": {\n      \"fields\": {\n        \"details\": \"string?\",\n        \"image\": \"string?\",\n        \"joinable\": \"boolean?\",\n        \"party\": \"PartySize?\",\n        \"state\": \"string\"\n      }\n    },\n    \"HelixSession\": {\n      \"fields\": {\n        \"expiresAt\": \"string\",\n        \"scopes\": \"string[]\",\n        \"token\": \"string\",\n        \"trial\": \"HelixTrial?\",\n        \"user\": \"HelixUser\"\n      }\n    },\n    \"HelixUser\": {\n      \"fields\": {\n        \"displayName\": \"string|null\",\n        \"id\": \"string\",\n        \"username\": \"string\"\n      }\n    },\n    \"HelixVoiceState\": {\n      \"fields\": {\n        \"activeDeviceId\": \"string?\",\n        \"audioBlocked\": \"boolean?\",\n        \"available\": \"boolean\",\n        \"channelId\": \"string?\",\n        \"connected\": \"boolean\",\n        \"devices\": \"HelixVoiceDevice[]\",\n        \"error\": \"string?\",\n        \"micMode\": \"HelixVoiceMicMode\",\n        \"permission\": \"HelixVoicePermission\",\n        \"pttKey\": \"string?\",\n        \"speakingUserIds\": \"string[]\",\n        \"transmitting\": \"boolean\"\n      }\n    },\n    \"HelixWorldContext\": {\n      \"fields\": {\n        \"id\": \"string\",\n        \"slug\": \"string\",\n        \"title\": \"string\"\n      }\n    },\n    \"InventoryItem\": {\n      \"fields\": {\n        \"avatarSlot\": \"string|null?\",\n        \"category\": \"string?\",\n        \"description\": \"string|null?\",\n        \"equipped\": \"boolean?\",\n        \"id\": \"string?\",\n        \"itemId\": \"string\",\n        \"kind\": \"string?\",\n        \"metadata\": \"object?\",\n        \"quantity\": \"number\",\n        \"socket\": \"string|null?\",\n        \"subCategory\": \"string|null?\",\n        \"thumbnailUrl\": \"string|null?\",\n        \"title\": \"string\"\n      }\n    },\n    \"LeaderboardPage\": {\n      \"fields\": {\n        \"entries\": \"LeaderboardEntry[]\",\n        \"truncated\": \"boolean\"\n      }\n    },\n    \"LeaderboardSubmitResult\": {\n      \"fields\": {\n        \"best\": \"number|null\",\n        \"updated\": \"boolean\"\n      }\n    },\n    \"ListenAdmissionResult\": {\n      \"fields\": {\n        \"admitted\": \"boolean\",\n        \"joinerUserId\": \"string?\",\n        \"reason\": \"string?\",\n        \"seatId\": \"string?\"\n      }\n    },\n    \"ListenReleaseResult\": {\n      \"fields\": {\n        \"released\": \"boolean\"\n      }\n    },\n    \"MatchFound\": {\n      \"fields\": {\n        \"expiresAt\": \"number\",\n        \"instanceId\": \"string\",\n        \"roomType\": \"string\",\n        \"ticketId\": \"string\"\n      }\n    },\n    \"PackageCustomizerContext\": {\n      \"fields\": {\n        \"source\": \"PackageCustomizerSource|null\",\n        \"subject\": \"PackageCustomizerSubject|null\"\n      }\n    },\n    \"Party\": {\n      \"fields\": {\n        \"code\": \"PartyCode?\",\n        \"id\": \"string\",\n        \"leaderId\": \"string\",\n        \"maxSize\": \"integer\",\n        \"members\": \"PartyMember[]\"\n      }\n    },\n    \"PartyCode\": {\n      \"fields\": {\n        \"code\": \"string\",\n        \"expiresAt\": \"number\"\n      }\n    },\n    \"PartyInvite\": {\n      \"fields\": {\n        \"expiresAt\": \"number\",\n        \"from\": \"PartyMember\",\n        \"id\": \"string\",\n        \"partyId\": \"string\"\n      }\n    },\n    \"PartyInviteReceipt\": {\n      \"fields\": {\n        \"expiresAt\": \"number\",\n        \"inviteId\": \"string\"\n      }\n    },\n    \"PartyMember\": {\n      \"fields\": {\n        \"displayName\": \"string\",\n        \"userId\": \"string\"\n      }\n    },\n    \"PartyState\": {\n      \"fields\": {\n        \"invites\": \"PartyInvite[]\",\n        \"party\": \"Party|null\"\n      }\n    },\n    \"PurchaseOptions\": {\n      \"fields\": {\n "
    "       \"idempotencyKey\": \"string?\",\n        \"quantity\": \"integer?\"\n      }\n    },\n    \"PurchaseResult\": {\n      \"fields\": {\n        \"balanceAfterLix\": \"number?\",\n        \"completed\": \"boolean\",\n        \"itemId\": \"string|null?\",\n        \"priceLix\": \"number?\",\n        \"receipt\": \"string?\",\n        \"status\": \"PurchaseStatus\"\n      }\n    },\n    \"QueueStatus\": {\n      \"fields\": {\n        \"match\": \"MatchFound?\",\n        \"queueId\": \"string?\",\n        \"reason\": \"QueueEndReason?\",\n        \"serverReason\": \"string?\",\n        \"status\": \"QueueState\",\n        \"waiting\": \"QueueWaiting?\"\n      }\n    },\n    \"QueueWaiting\": {\n      \"fields\": {\n        \"needed\": \"integer\",\n        \"players\": \"integer\"\n      }\n    },\n    \"RuntimeError\": {\n      \"fields\": {\n        \"code\": \"StableError\",\n        \"message\": \"string\",\n        \"remediation\": \"string?\",\n        \"retryable\": \"boolean\"\n      }\n    },\n    \"RuntimeFidelityIntent\": {\n      \"fields\": {\n        \"renderScaleOverride\": \"RuntimeFidelityRenderScale|null\",\n        \"requestedVisualTier\": \"RuntimeFidelityVisualTier\",\n        \"runtimeProfileQuality\": \"RuntimeProfileQuality|null\",\n        \"version\": \"1\"\n      }\n    },\n    \"SavedPhoto\": {\n      \"fields\": {\n        \"assetId\": \"string\",\n        \"createdAt\": \"string\",\n        \"thumbnailUrl\": \"string\",\n        \"url\": \"string\",\n        \"worldName\": \"string\"\n      }\n    }\n  }\n}";
inline constexpr std::string_view HandlesJson = "{\n  \"multiplayer\": {\n    \"HelixRoom\": {\n      \"methods\": [\n        \"onStateChange\",\n        \"onAdd.players\",\n        \"onAdd.entities\",\n        \"onRemove.players\",\n        \"onRemove.entities\",\n        \"onMessage\",\n        \"onTicket\",\n        \"onStateAck\",\n        \"onEntityStateAck\",\n        \"sendState\",\n        \"sendAbility\",\n        \"sendAction\",\n        \"sendGesture\",\n        \"sendAttachments\",\n        \"uploadEntity\",\n        \"uploadEntities\",\n        \"pendingInputs\",\n        \"acknowledge\",\n        \"onDrop\",\n        \"onReconnect\",\n        \"onLeave\",\n        \"leave\",\n        \"player\"\n      ],\n      \"properties\": [\n        \"roomId\",\n        \"sessionId\",\n        \"roomType\",\n        \"instanceKey\",\n        \"effectiveUploadHz\",\n        \"state\",\n        \"vars\",\n        \"me\",\n        \"phase\",\n        \"currentTurn\",\n        \"isMyTurn\"\n      ]\n    }\n  }\n}";
// The contract JSON is bound with an EXPLICIT length rather than let
// std::string_view measure it.
//
// string_view's char* constructor calls char_traits::length, which at constexpr
// is a loop over every character. The contract passed GCC's default
// -fconstexpr-loop-limit (262144) some time ago, so
// `npm run test:runtime-contract:cpp` fails on any GCC host with
// "constexpr loop iteration count exceeds limit" — pointing at libstdc++'s
// char_traits.h, which names neither this file nor the reason. It passes on
// clang only because clang's limits are counted differently, so the breakage is
// invisible on a mac and total on Linux.
//
// sizeof on the array is a compile-time constant with no loop, so the length is
// known for free and can never drift from the literal. The public name and type
// are unchanged; only how the length is obtained.
//
// cppLiteral splits this payload into adjacent tokens below MSVC's C2026 limit.
inline constexpr char ContractJsonData[] = "{\n  \"$schema\": \"./runtime-contract.schema.json\",\n  \"authorityProfiles\": {\n    \"client\": {\n      \"description\": \"A player runtime launched by the HELIX shell. Platform credentials remain in the shell.\",\n      \"trust\": \"untrusted_player\"\n    },\n    \"listen\": {\n      \"description\": \"A player-owned host. It never receives managed workload authority.\",\n      \"trust\": \"untrusted_player_host\"\n    },\n    \"managed_server\": {\n      \"description\": \"A HELIX-managed workload with short-lived World, Build, and Instance-bound authority.\",\n      \"trust\": \"trusted_allocation_workload\"\n    },\n    \"preview\": {\n      \"description\": \"Local creator preview. Mutating platform calls may simulate or report unavailable.\",\n      \"trust\": \"untrusted_preview\"\n    }\n  },\n  \"availabilityMeanings\": {\n    \"available\": \"Implemented on the declared transport and safe to bind.\",\n    \"conditional\": \"Implemented only on the named transport or profile; bindings must expose capability discovery.\",\n    \"correction_required\": \"Implementation exists but its current authority or result semantics must be corrected before cross-runtime parity.\",\n    \"unavailable\": \"Public name exists but the audited implementation does not perform the promised operation.\"\n  },\n  \"capabilities\": {\n    \"auth.profile\": {\n      \"description\": \"Read the current world-session profile.\",\n      \"status\": \"enforced\"\n    },\n    \"camera.capture\": {\n      \"description\": \"Save a world-captured image to the player's album.\",\n      \"status\": \"enforced\"\n    },\n    \"camera.control\": {\n      \"description\": \"Let a WORLD SCRIPT drive the player's native camera (mode, lens, filter, timer, shutter). Deliberately NOT required by the native camera itself: HELIX OS opens that as a free avatar ability and pushes helix:camera-state without consulting the world manifest, so a world cannot take the player's camera away by omitting a scope. This gates only the reverse act — a world reaching for controls the player did not touch. It is also NOT camera.capture, which is about writing an image to the player's album; pointing the camera and saving what it saw are separate permissions on purpose.\",\n      \"status\": \"enforced\"\n    },\n    \"multiplayer\": {\n      \"description\": \"Reserve and join the declared multiplayer provider.\",\n      \"status\": \"enforced\"\n    },\n    \"voice.proximity\": {\n      \"description\": \"Use positional voice metadata.\",\n      \"status\": \"enforced\"\n    },\n    \"voice.room\": {\n      \"description\": \"Join room voice.\",\n      \"status\": \"enforced\"\n    }\n  },\n  \"contractVersion\": 1,\n  \"digest\": \"sha256:774e64f70ee1c9a6438e5403ed518fb1c991a29eacd2c5a66ccabe75c01b6728\",\n  \"events\": [\n    {\n      \"name\": \"auth-changed\",\n      \"owner\": \"shell\",\n      \"payload\": \"HelixUser|null\"\n    },\n    {\n      \"name\": \"balance-changed\",\n      \"owner\": \"shell\",\n      \"payload\": \"void\"\n    },\n    {\n      \"name\": \"inventory-changed\",\n      \"owner\": \"shell\",\n      \"payload\": \"void\"\n    },\n    {\n      \"name\": \"entitlements-changed\",\n      \"owner\": \"shell\",\n      \"payload\": \"void\"\n    },\n    {\n      \"name\": \"avatar-changed\",\n      \"owner\": \"shell\",\n      \"payload\": \"void\"\n    },\n    {\n      \"name\": \"equipment-changed\",\n      \"owner\": \"shell\",\n      \"payload\": \"void\"\n    },\n    {\n      \"name\": \"emotes-changed\",\n      \"owner\": \"shell\",\n      \"payload\": \"void\"\n    },\n    {\n      \"name\": \"overlay-open\",\n      \"owner\": \"shell\",\n      \"payload\": \"string\"\n    },\n    {\n      \"name\": \"overlay-closed\",\n      \"owner\": \"shell\",\n      \"payload\": \"string\"\n    },\n    {\n      \"name\": \"multiplayer-state\",\n      \"owner\": \"network_provider\",\n      \"payload\": \"HelixMultiplayerState|null\"\n    },\n    {\n      \"name\": \"voice-state\",\n      \"owner\": \"voice_provider\",\n      \"payload\": \"HelixVoiceState\"\n    },\n    {\n      \"name\": \"voice-level\",\n      \"owner\": \"voice_provider\",\n      \"payload\": \"number\"\n    },\n    {\n      \"name\": \"debug-log\",\n      \"owner\": \"client\",\n      \"payload\": \"DebugLogEntry\"\n    },\n    {\n      \"name\": \"camera-state\",\n      \"owner\": \"shell\",\n      \"payload\": \"HelixCameraState\"\n    },\n    {\n      \"name\": \"camera-capability\",\n      \"owne"
    "r\": \"client\",\n      \"payload\": \"HelixCameraCapability\"\n    },\n    {\n      \"name\": \"world-leave\",\n      \"owner\": \"shell\",\n      \"payload\": \"void\"\n    }\n  ],\n  \"knownGaps\": [\n    {\n      \"id\": \"inventory-equip-false-success\",\n      \"publicMethod\": \"inventory.equipItem\",\n      \"status\": \"unavailable\"\n    },\n    {\n      \"id\": \"presence-world-session-rejected\",\n      \"publicMethod\": \"presence.setActivity\",\n      \"status\": \"correction_required\"\n    },\n    {\n      \"id\": \"wallet-client-balance-arithmetic\",\n      \"publicMethod\": \"wallet.getBalance\",\n      \"status\": \"correction_required\"\n    },\n    {\n      \"id\": \"analytics-platform-hardcoded-web\",\n      \"publicMethod\": \"analytics.track\",\n      \"status\": \"correction_required\"\n    },\n    {\n      \"id\": \"voice-ownership-not-cross-runtime\",\n      \"publicMethod\": \"voice.join\",\n      \"status\": \"correction_required\"\n    },\n    {\n      \"id\": \"creator-webui-not-public\",\n      \"publicMethod\": null,\n      \"status\": \"unavailable\"\n    },\n    {\n      \"id\": \"homes-not-public-and-native-launch-disabled\",\n      \"publicMethod\": null,\n      \"status\": \"unavailable\"\n    },\n    {\n      \"id\": \"raw-session-token-not-unreal-bindable\",\n      \"publicMethod\": \"root.getSessionToken\",\n      \"status\": \"correction_required\"\n    },\n    {\n      \"id\": \"camera-drone-flight-authority-uncontracted\",\n      \"publicMethod\": \"camera.flyDrone\",\n      \"status\": \"unavailable\"\n    }\n  ],\n  \"namespaces\": {\n    \"achievements\": {\n      \"methods\": {\n        \"list\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"player_access_or_public_view\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<AchievementListResult>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"player_access_or_public_view\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"player_access_or_public_view\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"player_access_or_public_view\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<AchievementListResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"mine\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<AchievementMineResult>\",\n          \"profilePolicies"
    "\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<AchievementMineResult>\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"analytics\": {\n      \"methods\": {\n        \"track\": {\n          \"authority\": \"platform\",\n          \"availability\": \"correction_required\",\n          \"correction\": \"runtime_platform_must_not_be_hardcoded_web\",\n          \"credentials\": [\n            \"world_session_or_anonymous\"\n          ],\n          \"errors\": [\n            \"CORRECTION_REQUIRED\"\n          ],\n          \"idempotency\": \"event_id\",\n          \"input\": \"eventName: AnalyticsEventName, input?: AnalyticsTrackInput\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"correction_required\",\n              \"correction\": \"runtime_platform_must_not_be_hardcoded_web\",\n              \"credentials\": [\n                \"world_session_or_anonymous\"\n              ],\n              \"idempotency\": \"event_id\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"correction_required\",\n              \"correction\": \"runtime_platform_must_not_be_hardcoded_web\",\n              \"credentials\": [\n                \"world_session_or_anonymous\"\n              ],\n              \"idempotency\": \"event_id\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"runtime_platform_must_not_be_hardcoded_web\"\n            },\n            \"web\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"runtime_platform_must_not_be_hardcoded_web\"\n            }\n          },\n          \"signature\": \"(eventName: AnalyticsEventName, input?: AnalyticsTrackInput) => Promise<void>\",\n          \"transportOwner\": \"direct\"\n        }\n      }\n    },\n    \"auth\": {\n      \"methods\": {\n        \"getUser\": {\n          \"authority\": \"shell_player\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<HelixUser | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n          "
    "    \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"auth.profile\"\n              ],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"auth.profile\"\n              ],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"auth.profile\"\n              ],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"auth.profile\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<HelixUser | null>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"isAuthenticated\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => boolean\",\n          \"transportOwner\": \"local\"\n        },\n        \"onAuthChanged\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"listener: AuthListener) => ((\",\n          \"output\": \"void)\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credenti"
    "als\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(listener: AuthListener) => (() => void)\",\n          \"transportOwner\": \"shell\"\n        },\n        \"requestLogin\": {\n          \"authority\": \"shell_player\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<HelixUser>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<HelixUser>\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"avatar\": {\n      \"methods\": {\n        \"getEquipped\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"public_user_identity\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<EquippedAvatar | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_user_identity\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_user_identity\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            },\n            \"preview\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_user_identity\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOw"
    "ner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<EquippedAvatar | null>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"getEquippedForUser\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"public_user_identity\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"userId: string\",\n          \"output\": \"Promise<EquippedAvatar | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_user_identity\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_user_identity\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            },\n            \"preview\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_user_identity\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(userId: string) => Promise<EquippedAvatar | null>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"getLoadout\": {\n          \"authority\": \"platform\",\n          \"availability\": \"conditional\",\n          \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<AvatarLoadout | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"conditional\",\n              \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"conditional\",\n              \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shel"
    "l\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"shell_only_until_runtime_token_is_accepted\"\n            },\n            \"web\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"shell_only_until_runtime_token_is_accepted\"\n            }\n          },\n          \"signature\": \"() => Promise<AvatarLoadout | null>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"onAvatarChanged\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: () => void) => ((\",\n          \"output\": \"void)\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: () => void) => (() => void)\",\n          \"transportOwner\": \"shell\"\n        },\n        \"openCreator\": {\n          \"authority\": \"shell_player\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<boolean>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n            "
    "  \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<boolean>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"updateLoadout\": {\n          \"authority\": \"platform\",\n          \"availability\": \"conditional\",\n          \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"optimistic_server_update\",\n          \"input\": \"patch: AvatarLoadoutPatch\",\n          \"output\": \"Promise<AvatarLoadout | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"conditional\",\n              \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"optimistic_server_update\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"conditional\",\n              \"correction\": \"shell_only_until_runtime_token_is_accepted\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"optimistic_server_update\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"shell_only_until_runtime_token_is_accepted\"\n            },\n            \"web\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"shell_only_until_runtime_token_is_accepted\"\n            }\n          },\n          \"signature\": \"(patch: AvatarLoadoutPatch) => Promise<AvatarLoadout | null>\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"camera\": {\n      \"methods\": {\n        \"available\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => boolean\",\n          \"transportOwner\": \"local\"\n        },\n        \"capabilities\": {\n          \"authority\": \"client\",\n   "
    "       \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"HelixCameraCapability\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => HelixCameraCapability\",\n          \"transportOwner\": \"local\"\n        },\n        \"capture\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"canvas: HTMLCanvasElement, opts?: CaptureOptions\",\n          \"output\": \"Promise<Blob>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(canvas: HTMLCanvasElement, opts?: CaptureOptions) => Promise<Blob>\",\n          \"transportOwner\": \"local\"\n        },\n        \"control\": {\n          \"authority\": \"shell_player\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CORRECTION_REQUIRED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"RUNTIME_CAPABILITY_UNAVAILABLE\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"control: HelixCameraControl\",\n          \"output\": \"Promise<HelixCameraState>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"shell_pla"
    "yer\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [\n                \"camera.control\"\n              ],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [\n                \"camera.control\"\n              ],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"camera.control\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(control: HelixCameraControl) => Promise<HelixCameraState>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"flyDrone\": {\n          \"authority\": \"shell_player\",\n          \"availability\": \"unavailable\",\n          \"correction\": \"drone_flight_authority_contract_required\",\n          \"credentials\": [],\n          \"errors\": [\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"command: HelixCameraDroneCommand\",\n          \"output\": \"Promise<HelixCameraDroneState>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"unavailable\",\n              \"correction\": \"drone_flight_authority_contract_required\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"camera.control\"\n              ],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"unavailable\",\n              \"correction\": \"drone_flight_authority_contract_required\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"camera.control\"\n              ],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"camera.control\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"unavailable\",\n              \"bindable\": false,\n              \"correction\": \"drone_flight_authority_contract_required\"\n            },\n            \"web\": {\n              \"availability\": \"unavailable\",\n              \"bindable\": false,\n              \"correction\": \"drone_flight_authority_contract_required\"\n            }\n          },\n          \"signature\": \"(command: HelixCameraDroneCommand) => Promise<HelixCameraDroneState>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"getState\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"HelixCameraState\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \""
    "authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => HelixCameraState\",\n          \"transportOwner\": \"local\"\n        },\n        \"onStateChanged\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (state: HelixCameraState) => void) => ((\",\n          \"output\": \"void)\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (state: HelixCameraState) => void) => (() => void)\",\n          \"transportOwner\": \"local\"\n        },\n        \"reportCapability\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"capability: HelixCameraCapability\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"avail"
    "ability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(capability: HelixCameraCapability) => boolean\",\n          \"transportOwner\": \"shell\"\n        },\n        \"savePhoto\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"server_defined\",\n          \"input\": \"image: Blob | ArrayBuffer | Uint8Array, meta?: { caption?: string; aspect?: CameraAspect; contentType?: string; }\",\n          \"output\": \"Promise<SavedPhoto | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"camera.capture\"\n              ],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"camera.capture\"\n              ],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"camera.capture\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(image: Blob | ArrayBuffer | Uint8Array, meta?: { caption?: string; aspect?: CameraAspect; contentType?: string; }) => Promise<SavedPhoto | null>\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"customizer\": {\n      \"methods\": {\n        \"getContext\": {\n          \"authority\": \"shell_player\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session_or_preview\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"PackageCustomizerContext\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session_or_preview\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session_or_preview\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session_or_preview\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \""
    "unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => PackageCustomizerContext\",\n          \"transportOwner\": \"local\"\n        }\n      }\n    },\n    \"dataStore\": {\n      \"methods\": {\n        \"delete\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"optimistic_version\",\n          \"input\": \"key: string, options?: DataStoreWriteOptions\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"optimistic_version\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"optimistic_version\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"managed_server\": {\n              \"authority\": \"world_server\",\n              \"availability\": \"unavailable\",\n              \"correction\": \"planned_managed_server_route_not_shipped\",\n              \"credentials\": [\n                \"managed_workload_credential\"\n              ],\n              \"idempotency\": \"optimistic_version\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(key: string, options?: DataStoreWriteOptions) => Promise<void>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"get\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"key: string\",\n          \"output\": \"Promise<T | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"managed_server\": {\n              \"authority\": \"world_server\",\n              \"availability\": \"unavailable\",\n              \"correction\": \"planned_managed_server_route_not_shipped\",\n              \"credentia"
    "ls\": [\n                \"managed_workload_credential\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"<T = unknown>(key: string) => Promise<T | null>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"getEntry\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"key: string\",\n          \"output\": \"Promise<{ value: T; version: number; } | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"managed_server\": {\n              \"authority\": \"world_server\",\n              \"availability\": \"unavailable\",\n              \"correction\": \"planned_managed_server_route_not_shipped\",\n              \"credentials\": [\n                \"managed_workload_credential\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"<T = unknown>(key: string) => Promise<{ value: T; version: number; } | null>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"list\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"prefix?: string, opts?: DataStoreListOptions\",\n          \"output\": \"Promise<DataStoreListPage>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"creden"
    "tials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"managed_server\": {\n              \"authority\": \"world_server\",\n              \"availability\": \"unavailable\",\n              \"correction\": \"planned_managed_server_route_not_shipped\",\n              \"credentials\": [\n                \"managed_workload_credential\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(prefix?: string, opts?: DataStoreListOptions) => Promise<DataStoreListPage>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"set\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"optimistic_version\",\n          \"input\": \"key: string, value: T, options?: DataStoreWriteOptions\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"optimistic_version\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"optimistic_version\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"managed_server\": {\n              \"authority\": \"world_server\",\n              \"availability\": \"unavailable\",\n              \"correction\": \"planned_managed_server_route_not_shipped\",\n              \"credentials\": [\n                \"managed_workload_credential\"\n              ],\n              \"idempotency\": \"optimistic_version\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"<T = unknown>(key: string, value: T, options?: DataStoreWriteOptions) => Promise<void>\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"debug\": {\n      \"methods\": {\n        \"enabled\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabi"
    "lities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"managed_server\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => boolean\",\n          \"transportOwner\": \"local\"\n        },\n        \"log\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"...args: unknown[]\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"managed_server\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(...args: unknown[]) => void\",\n          \"transportOwner\": \"local\"\n        },\n        \"onLog\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (entry: DebugLogEntry) => void) => ((\",\n          \"output\": \"void)\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n          "
    "  },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"managed_server\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (entry: DebugLogEntry) => void) => (() => void)\",\n          \"transportOwner\": \"local\"\n        },\n        \"recent\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"DebugLogEntry[]\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"managed_server\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => DebugLogEntry[]\",\n          \"transportOwner\": \"local\"\n        }\n      }\n    },\n    \"device\": {\n      \"methods\": {\n        \"openPhone\": {\n          \"authority\": \"shell_player\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n"
    "              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => boolean\",\n          \"transportOwner\": \"shell\"\n        },\n        \"openTablet\": {\n          \"authority\": \"shell_player\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => boolean\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"emotes\": {\n      \"methods\": {\n        \"getEquipped\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"public_user_identity\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<EquippedEmotes | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_user_identity\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\""
    ",\n              \"credentials\": [\n                \"public_user_identity\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            },\n            \"preview\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_user_identity\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<EquippedEmotes | null>\",\n          \"transportOwner\": \"direct\"\n        }\n      }\n    },\n    \"inventory\": {\n      \"methods\": {\n        \"equipItem\": {\n          \"authority\": \"platform\",\n          \"availability\": \"unavailable\",\n          \"correction\": \"inventory_instance_equip_contract_required\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"itemId: string\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {},\n          \"profiles\": [],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"unavailable\",\n              \"bindable\": false,\n              \"correction\": \"inventory_instance_equip_contract_required\"\n            },\n            \"web\": {\n              \"availability\": \"unavailable\",\n              \"bindable\": false,\n              \"correction\": \"inventory_instance_equip_contract_required\"\n            }\n          },\n          \"signature\": \"(itemId: string) => Promise<void>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"getMyItems\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<InventoryItem[]>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<InventoryItem[]>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"getQuantity\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"erro"
    "rs\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"itemId: string\",\n          \"output\": \"Promise<number>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(itemId: string) => Promise<number>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"hasItem\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"itemId: string\",\n          \"output\": \"Promise<boolean>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(itemId: string) => Promise<boolean>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"onInventoryChanged\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: () => void) => ((\",\n          \"output\": \"void)\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"av"
    "ailability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: () => void) => (() => void)\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"leaderboard\": {\n      \"methods\": {\n        \"submit\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"server_defined\",\n          \"input\": \"board: string, score: number, options?: LeaderboardSubmitOptions\",\n          \"output\": \"Promise<LeaderboardSubmitResult>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"managed_server\": {\n              \"authority\": \"world_server\",\n              \"availability\": \"unavailable\",\n              \"correction\": \"planned_managed_server_route_not_shipped\",\n              \"credentials\": [\n                \"managed_workload_credential\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(board: string, score: number, options?: LeaderboardSubmitOptions) => Promise<LeaderboardSubmitResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"top\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"board: string, options?: LeaderboardTopOptions\",\n          \"output\": \"Promise<LeaderboardPage>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"availa"
    "ble\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"managed_server\": {\n              \"authority\": \"world_server\",\n              \"availability\": \"unavailable\",\n              \"correction\": \"planned_managed_server_route_not_shipped\",\n              \"credentials\": [\n                \"managed_workload_credential\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\",\n            \"managed_server\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(board: string, options?: LeaderboardTopOptions) => Promise<LeaderboardPage>\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"listen\": {\n      \"methods\": {\n        \"close\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"sessionId: string\",\n          \"output\": \"Promise<ListenCloseResult>\",\n          \"profilePolicies\": {\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"unavailable\",\n              \"bindable\": false,\n              \"correction\": \"listen_host_admission_is_native_host_only\"\n            }\n          },\n          \"signature\": \"(sessionId: string) => Promise<ListenCloseResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"consume\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"sdk_minted_operation_id\",\n          \"input\": \"sessionId: string, listenJoinToken: string, connectionId: string\",\n          \"output\": \"Promise<ListenAdmissionResult>\",\n          \"profilePolicies\": {\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"sdk_minted_operation_id\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n  "
    "          \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"unavailable\",\n              \"bindable\": false,\n              \"correction\": \"listen_host_admission_is_native_host_only\"\n            }\n          },\n          \"signature\": \"(sessionId: string, listenJoinToken: string, connectionId: string) => Promise<ListenAdmissionResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"heartbeat\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"sessionId: string\",\n          \"output\": \"Promise<ListenHeartbeatResult>\",\n          \"profilePolicies\": {\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"unavailable\",\n              \"bindable\": false,\n              \"correction\": \"listen_host_admission_is_native_host_only\"\n            }\n          },\n          \"signature\": \"(sessionId: string) => Promise<ListenHeartbeatResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"release\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"sdk_minted_operation_id\",\n          \"input\": \"sessionId: string, seatId: string, connectionId: string\",\n          \"output\": \"Promise<ListenReleaseResult>\",\n          \"profilePolicies\": {\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"sdk_minted_operation_id\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"unavailable\",\n              \"bindable\": false,\n              \"correction\": \"listen_host_admission_is_native_host_only\"\n            }\n          },\n          \"signature\": \"(sessionId: string, seatId: string, connectionId: string) => Promise<ListenReleaseResult>\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"locomotion\": {\n      \"methods\": {\n        \"getEquipped\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n        "
    "  \"input\": \"\",\n          \"output\": \"Promise<EquippedLocomotionPack | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<EquippedLocomotionPack | null>\",\n          \"transportOwner\": \"network_provider\"\n        }\n      }\n    },\n    \"marketplace\": {\n      \"methods\": {\n        \"getListings\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"public_or_player_access\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"query?: MarketplaceQuery\",\n          \"output\": \"Promise<MarketplaceListing[]>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_or_player_access\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_or_player_access\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"public_or_player_access\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(query?: MarketplaceQuery) => Promise<MarketplaceListing[]>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"getPurchase\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n   "
    "         \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"lookup_by_original_key\",\n          \"input\": \"idempotencyKey: string, ref?: string\",\n          \"output\": \"Promise<PurchaseResult | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"lookup_by_original_key\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"lookup_by_original_key\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(idempotencyKey: string, ref?: string) => Promise<PurchaseResult | null>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"getPurchaseContext\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"ref: string, options?: PurchaseOptions | number\",\n          \"output\": \"Promise<PurchaseContext | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(ref: string, options?: PurchaseOptions | number) => Promise<PurchaseContext | null>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"purchaseDistribution\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"required_or_sdk_managed\",\n          \"input\": \"distributionId: string, options?: PurchaseOptions | number\",\n          \"output\": \"Promise<PurchaseResult>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\":"
    " \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"required_or_sdk_managed\",\n              \"receipt\": \"helix-purchase-receipt\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"required_or_sdk_managed\",\n              \"receipt\": \"helix-purchase-receipt\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"receipt\": \"helix-purchase-receipt\",\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(distributionId: string, options?: PurchaseOptions | number) => Promise<PurchaseResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"purchaseDistributionKey\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"required_or_sdk_managed\",\n          \"input\": \"key: string, options?: PurchaseOptions | number\",\n          \"output\": \"Promise<PurchaseResult>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"required_or_sdk_managed\",\n              \"receipt\": \"helix-purchase-receipt\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"required_or_sdk_managed\",\n              \"receipt\": \"helix-purchase-receipt\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"receipt\": \"helix-purchase-receipt\",\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(key: string, options?: PurchaseOptions | number) => Promise<PurchaseResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"purchaseListing\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"required_or_sdk_managed\",\n          \"input\": \"listingId: string, options?: PurchaseOptions\",\n          \"output\": \"Promise<PurchaseResult>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_sessi"
    "on\"\n              ],\n              \"idempotency\": \"required_or_sdk_managed\",\n              \"receipt\": \"helix-purchase-receipt\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"required_or_sdk_managed\",\n              \"receipt\": \"helix-purchase-receipt\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"receipt\": \"helix-purchase-receipt\",\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(listingId: string, options?: PurchaseOptions) => Promise<PurchaseResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"purchaseProduct\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"required_or_sdk_managed\",\n          \"input\": \"productKey: string, options?: PurchaseOptions | number\",\n          \"output\": \"Promise<PurchaseResult>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"required_or_sdk_managed\",\n              \"receipt\": \"helix-purchase-receipt\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"required_or_sdk_managed\",\n              \"receipt\": \"helix-purchase-receipt\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"receipt\": \"helix-purchase-receipt\",\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(productKey: string, options?: PurchaseOptions | number) => Promise<PurchaseResult>\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"matchmaking\": {\n      \"methods\": {\n        \"cancel\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"delete_current\",\n          \"input\": \"\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n   "
    "             \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<void>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"enqueue\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"server_defined\",\n          \"input\": \"queueId: string\",\n          \"output\": \"Promise<QueueStatus>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(queueId: string) => Promise<QueueStatus>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"onMatch\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (match: MatchFound) => void) => (\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n  "
    "              \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (match: MatchFound) => void) => () => void\",\n          \"transportOwner\": \"direct\"\n        },\n        \"onStatus\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (status: QueueStatus) => void) => (\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (status: QueueStatus) => void) => () => void\",\n          \"transportOwner\": \"direct\"\n        },\n        \"status\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<QueueStatus>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\":"
    " \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"matchmaking_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<QueueStatus>\",\n          \"transportOwner\": \"direct\"\n        }\n      }\n    },\n    \"materials\": {\n      \"methods\": {\n        \"clearCache\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => void\",\n          \"transportOwner\": \"local\"\n        },\n        \"fromCatalog\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"assetBaseUrl: string, catalog: HelixMaterialCatalog\",\n          \"output\": \"HelixMaterialLibrary\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(assetBaseUrl: string, catalog: HelixMaterialCatalog) => HelixMaterialLibrary\",\n          \"transportOwner\": \"local\"\n        },\n        \"load\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"cache_"
    "by_url\",\n          \"input\": \"assetBaseUrl: string\",\n          \"output\": \"Promise<HelixMaterialLibrary>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"cache_by_url\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"cache_by_url\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"cache_by_url\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(assetBaseUrl: string) => Promise<HelixMaterialLibrary>\",\n          \"transportOwner\": \"local\"\n        }\n      }\n    },\n    \"multiplayer\": {\n      \"handles\": {\n        \"HelixRoom\": {\n          \"methods\": [\n            \"onStateChange\",\n            \"onAdd.players\",\n            \"onAdd.entities\",\n            \"onRemove.players\",\n            \"onRemove.entities\",\n            \"onMessage\",\n            \"onTicket\",\n            \"onStateAck\",\n            \"onEntityStateAck\",\n            \"sendState\",\n            \"sendAbility\",\n            \"sendAction\",\n            \"sendGesture\",\n            \"sendAttachments\",\n            \"uploadEntity\",\n            \"uploadEntities\",\n            \"pendingInputs\",\n            \"acknowledge\",\n            \"onDrop\",\n            \"onReconnect\",\n            \"onLeave\",\n            \"leave\",\n            \"player\"\n          ],\n          \"properties\": [\n            \"roomId\",\n            \"sessionId\",\n            \"roomType\",\n            \"instanceKey\",\n            \"effectiveUploadHz\",\n            \"state\",\n            \"vars\",\n            \"me\",\n            \"phase\",\n            \"currentTurn\",\n            \"isMyTurn\"\n          ]\n        }\n      },\n      \"methods\": {\n        \"configure\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_configuration\",\n          \"input\": \"options: { apiBaseUrl: string; }\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"replace_configuration\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"replace_configuration\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n         "
    "     ],\n              \"idempotency\": \"replace_configuration\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(options: { apiBaseUrl: string; }) => void\",\n          \"transportOwner\": \"network_provider\"\n        },\n        \"currentRoomId\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"string | null\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => string | null\",\n          \"transportOwner\": \"network_provider\"\n        },\n        \"joinRoom\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session_then_room_credential\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"reservation_defined\",\n          \"input\": \"worldId?: string, options?: JoinRoomOptions\",\n          \"output\": \"Promise<HelixRoom>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session_then_room_credential\"\n              ],\n              \"idempotency\": \"reservation_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session_then_room_credential\"\n              ],\n              \"idempotency\": \"reservation_def"
    "ined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(worldId?: string, options?: JoinRoomOptions) => Promise<HelixRoom>\",\n          \"transportOwner\": \"network_provider\"\n        },\n        \"leave\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<void>\",\n          \"transportOwner\": \"network_provider\"\n        },\n        \"switchRoom\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session_then_room_credential\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\"\n          ],\n          \"idempotency\": \"reservation_defined\",\n          \"input\": \"target: SwitchRoomTarget, options?: SwitchRoomOptions\",\n          \"output\": \"Promise<HelixRoom>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session_then_room_credential\"\n              ],\n              \"idempotency\": \"reservation_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session_then_room_credential\"\n              ],\n              \"idempotency\": \"reservation_defined\",\n              \"requiredCapabilities\": [\n  "
    "              \"multiplayer\"\n              ],\n              \"transportOwner\": \"network_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"room_hop_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(target: SwitchRoomTarget, options?: SwitchRoomOptions) => Promise<HelixRoom>\",\n          \"transportOwner\": \"network_provider\"\n        }\n      }\n    },\n    \"notify\": {\n      \"methods\": {\n        \"failure\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"title: string, message?: string\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(title: string, message?: string) => boolean\",\n          \"transportOwner\": \"shell\"\n        },\n        \"message\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"title: string, message?: string\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n          "
    "  \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(title: string, message?: string) => boolean\",\n          \"transportOwner\": \"shell\"\n        },\n        \"notification\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"title: string, message?: string\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(title: string, message?: string) => boolean\",\n          \"transportOwner\": \"shell\"\n        },\n        \"show\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"notification: HelixNotification\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": t"
    "rue\n            }\n          },\n          \"signature\": \"(notification: HelixNotification) => boolean\",\n          \"transportOwner\": \"shell\"\n        },\n        \"success\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"title: string, message?: string\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(title: string, message?: string) => boolean\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"party\": {\n      \"methods\": {\n        \"accept\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"server_defined\",\n          \"input\": \"inviteId: string\",\n          \"output\": \"Promise<Party>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(inviteId: string) => Promise<Party>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"createCode\": {\n          \"authority\": \"platform\",\n          \"av"
    "ailability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"\",\n          \"output\": \"Promise<PartyCode>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<PartyCode>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"decline\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"delete_current\",\n          \"input\": \"inviteId: string\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(inviteId: string) => Promise<void>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"get\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n      "
    "      \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<PartyState>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<PartyState>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"invite\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"server_defined\",\n          \"input\": \"userId: string\",\n          \"output\": \"Promise<PartyInviteReceipt>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(userId: string) => Promise<PartyInviteReceipt>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"join\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"server_defined\",\n          \"in"
    "put\": \"code: string\",\n          \"output\": \"Promise<Party>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"server_defined\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(code: string) => Promise<Party>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"kick\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"delete_current\",\n          \"input\": \"userId: string\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(userId: string) => Promise<void>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"leave\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"delete_current\",\n          \"input\": \"\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\""
    ": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<void>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"onChange\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (state: PartyState) => void) => (\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (state: PartyState) => void) => () => void\",\n          \"transportOwner\": \"direct\"\n        },\n        \"onError\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (error: HelixPartyError) => void) => (\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n     "
    "         \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (error: HelixPartyError) => void) => () => void\",\n          \"transportOwner\": \"direct\"\n        },\n        \"onInvite\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (invite: PartyInvite) => void) => (\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (invite: PartyInvite) => void) => () => void\",\n          \"transportOwner\": \"direct\"\n        },\n        \"promote\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"userId: string\",\n          \"output\": \"Promise<Party>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": tru"
    "e,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(userId: string) => Promise<Party>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"revokeCode\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"BACKEND_UNAVAILABLE\",\n            \"CAPABILITY_DENIED\",\n            \"CONFLICT\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"UNAVAILABLE\"\n          ],\n          \"idempotency\": \"delete_current\",\n          \"input\": \"\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"delete_current\",\n              \"requiredCapabilities\": [\n                \"multiplayer\"\n              ],\n              \"transportOwner\": \"direct\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"multiplayer\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"party_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<void>\",\n          \"transportOwner\": \"direct\"\n        }\n      }\n    },\n    \"presence\": {\n      \"methods\": {\n        \"clearActivity\": {\n          \"authority\": \"platform\",\n          \"availability\": \"correction_required\",\n          \"correction\": \"runtime_scoped_presence_authority_required\",\n          \"credentials\": [\n            \"world_session_currently_rejected\"\n          ],\n          \"errors\": [\n            \"CORRECTION_REQUIRED\"\n          ],\n          \"idempotency\": \"delete_current\",\n          \"input\": \"\",\n          \"output\": \"Promise<boolean>\",\n          \"profilePolicies\": {},\n          \"profiles\": [],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"runtime_scoped_presence_authority_required\"\n            },\n            \"web\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"runtime_scoped_presence_authority_required\"\n            }\n          },\n          \"signature\": \"() => Promise<boolean>\",\n          \"transportOwner\": \"direct\"\n        },\n        \"setActivity\": {\n          \"authority\": \"platform\",\n          \"availability\": \"correction_required\",\n          \"correction\": \"runtime_scoped_presence_authority_required\",\n          \"credentials\": [\n            \"world_session_currently_rejected\"\n          ],\n          \"errors\": [\n            \"CORRECTION_REQUIRED\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"activity: HelixPresenceActivity\",\n          \"output\": \"Promise<boolean>\",\n          \"profilePolicies\": {},\n          \"profiles\": [],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"co"
    "rrection\": \"runtime_scoped_presence_authority_required\"\n            },\n            \"web\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"runtime_scoped_presence_authority_required\"\n            }\n          },\n          \"signature\": \"(activity: HelixPresenceActivity) => Promise<boolean>\",\n          \"transportOwner\": \"direct\"\n        }\n      }\n    },\n    \"prompts\": {\n      \"methods\": {\n        \"clear\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"delete_by_prompt_id_or_all\",\n          \"input\": \"promptId?: string\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"delete_by_prompt_id_or_all\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"delete_by_prompt_id_or_all\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"delete_by_prompt_id_or_all\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(promptId?: string) => boolean\",\n          \"transportOwner\": \"shell\"\n        },\n        \"set\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_by_prompt_id\",\n          \"input\": \"prompt: HelixInteractionPrompt\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_by_prompt_id\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_by_prompt_id\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_by_prompt_id\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": t"
    "rue\n            }\n          },\n          \"signature\": \"(prompt: HelixInteractionPrompt) => boolean\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"purchases\": {\n      \"methods\": {\n        \"consume\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"sdk_minted_operation_id\",\n          \"input\": \"code: string, amount: number\",\n          \"output\": \"Promise<ConsumeResult>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"sdk_minted_operation_id\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"sdk_minted_operation_id\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(code: string, amount: number) => Promise<ConsumeResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"getEntitlements\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<Entitlements>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<Entitlements>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"getPurchase\": {\n          \"authority\": \"platform\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotenc"
    "y\": \"lookup_by_original_key\",\n          \"input\": \"idempotencyKey: string, ref?: string\",\n          \"output\": \"Promise<PurchaseResult | null>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"lookup_by_original_key\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"lookup_by_original_key\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(idempotencyKey: string, ref?: string) => Promise<PurchaseResult | null>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"onEntitlementsChanged\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: () => void) => ((\",\n          \"output\": \"void)\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: () => void) => (() => void)\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"root\": {\n      \"methods\": {\n        \"getSessionToken\": {\n          \"authority\": \"client\",\n          \"availability\": \"correction_required\",\n          \"correction\": \"web_world_session_is_not_an_unreal_runtime_credential\",\n          \"credentials\": [\n            \"world_session\"\n          ],\n          \"errors\": [\n            \"CORRECTION_REQUIRED\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"string | null\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"conditional\",\n              \"correction\": \"web_only_raw_world_session_token\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"re"
    "quiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"conditional\",\n              \"correction\": \"web_only_raw_world_session_token\",\n              \"credentials\": [\n                \"world_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"raw_session_token_must_not_be_unreal_bindable\"\n            },\n            \"web\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"web_only_raw_world_session_token\"\n            }\n          },\n          \"signature\": \"() => string | null\",\n          \"transportOwner\": \"local\"\n        },\n        \"hasLeft\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"boolean\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"world_leave_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => boolean\",\n          \"transportOwner\": \"local\"\n        },\n        \"init\": {\n          \"authority\": \"shell_player\",\n          \"availability\": \"available\",\n          \"credentials\": [\n            \"shell_player_session_or_preview\"\n          ],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"one_initialization_per_runtime\",\n          \"input\": \"\",\n          \"output\": \"Promise<HelixInitResult>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session_or_preview\"\n              ],\n              \"idempotency\": \"one_initialization_per_runtime\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session_or_preview\"\n              ],\n              \"idempotency\": \"one_initialization_per_runtime\",\n              \"requiredCapabilitie"
    "s\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"shell_player\",\n              \"availability\": \"available\",\n              \"credentials\": [\n                \"shell_player_session_or_preview\"\n              ],\n              \"idempotency\": \"one_initialization_per_runtime\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<HelixInitResult>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"onLeave\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: () => void) => (\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"conditional\",\n              \"bindable\": true,\n              \"correction\": \"world_leave_requires_runtime_capability_discovery\"\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: () => void) => () => void\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    },\n    \"voice\": {\n      \"methods\": {\n        \"applySettings\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"settings: HelixVoiceSettings\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n             "
    " \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(settings: HelixVoiceSettings) => Promise<void>\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"channel\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"string | null\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => string | null\",\n          \"transportOwner\": \"local\"\n        },\n        \"channelOf\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"userId: string\",\n          \"output\": \"string | null\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(userId: string) => string | null\",\n          \"transportOwner\": \"local\"\n        },\n        \"getMicMode\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"HelixVoiceMicMode\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],"
    "\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => HelixVoiceMicMode\",\n          \"transportOwner\": \"local\"\n        },\n        \"join\": {\n          \"authority\": \"platform\",\n          \"availability\": \"correction_required\",\n          \"correction\": \"shell_owned_cross_runtime_voice_contract_required\",\n          \"credentials\": [\n            \"world_session_or_instance_assignment\"\n          ],\n          \"errors\": [\n            \"CORRECTION_REQUIRED\"\n          ],\n          \"idempotency\": \"one_connection_per_client\",\n          \"input\": \"options?: JoinVoiceOptions\",\n          \"output\": \"Promise<boolean>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"correction_required\",\n              \"correction\": \"shell_owned_cross_runtime_voice_contract_required\",\n              \"credentials\": [\n                \"world_session_or_instance_assignment\"\n              ],\n              \"idempotency\": \"one_connection_per_client\",\n              \"requiredCapabilities\": [\n                \"voice.room\"\n              ],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"correction_required\",\n              \"correction\": \"shell_owned_cross_runtime_voice_contract_required\",\n              \"credentials\": [\n                \"world_session_or_instance_assignment\"\n              ],\n              \"idempotency\": \"one_connection_per_client\",\n              \"requiredCapabilities\": [\n                \"voice.room\"\n              ],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"voice.room\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"shell_owned_cross_runtime_voice_contract_required\"\n            },\n            \"web\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"shell_owned_cross_runtime_voice_contract_required\"\n            }\n          },\n          \"signature\": \"(options?: JoinVoiceOptions) => Promise<boolean>\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"leave\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabiliti"
    "es\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<void>\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"mutedUserIds\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"string[]\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => string[]\",\n          \"transportOwner\": \"local\"\n        },\n        \"onParticipantsChanged\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (userIds: string[]) => void) => (\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (userIds: string[]) => void) => () ="
    "> void\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"onSpeakingChanged\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (userIds: string[]) => void) => (\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (userIds: string[]) => void) => () => void\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"participantIds\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"INVALID_ARGUMENT\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"string[]\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"local\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => string[]\",\n          \"transportOwner\": \"local\"\n        },\n        \"setChannel\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"channelId: string | null\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [\n                \"voice.room\"\n              ],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabi"
    "lities\": [\n                \"voice.room\"\n              ],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"voice.room\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(channelId: string | null) => Promise<void>\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"setDevice\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"deviceId: string, label?: string\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(deviceId: string, label?: string) => Promise<void>\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"setListenerPose\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"position: HelixVoiceVec3, forward: HelixVoiceVec3, up?: HelixVoiceVec3\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [\n                \"voice.proximity\"\n              ],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [\n                \"voice.proximity\"\n              ],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"voice.proximity\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"availabl"
    "e\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(position: HelixVoiceVec3, forward: HelixVoiceVec3, up?: HelixVoiceVec3) => void\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"setMicMode\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"mode: HelixVoiceMicMode\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(mode: HelixVoiceMicMode) => Promise<void>\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"setMicVolume\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"volume: number\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(volume: number) => void\",\n          \"transportO"
    "wner\": \"voice_provider\"\n        },\n        \"setOutputVolume\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"volume: number\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(volume: number) => void\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"setParticipantPosition\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_by_participant\",\n          \"input\": \"userId: string, position: HelixVoiceVec3 | null\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_by_participant\",\n              \"requiredCapabilities\": [\n                \"voice.proximity\"\n              ],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_by_participant\",\n              \"requiredCapabilities\": [\n                \"voice.proximity\"\n              ],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [\n            \"voice.proximity\"\n          ],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(userId: string, position: HelixVoiceVec3 | null) => void\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"setParticipantVolume\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \""
    "replace_by_participant\",\n          \"input\": \"userId: string, volume: number\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_by_participant\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_by_participant\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(userId: string, volume: number) => void\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"setPlayerMuted\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_by_user\",\n          \"input\": \"userId: string, muted: boolean\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_by_user\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_by_user\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(userId: string, muted: boolean) => void\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"setPttDown\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"replace_current\",\n          \"input\": \"down: boolean\",\n          \"output\": \"void\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"replace_current\""
    ",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(down: boolean) => void\",\n          \"transportOwner\": \"voice_provider\"\n        },\n        \"startAudio\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<void>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"voice_provider\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"() => Promise<void>\",\n          \"transportOwner\": \"voice_provider\"\n        }\n      }\n    },\n    \"wallet\": {\n      \"methods\": {\n        \"getBalance\": {\n          \"authority\": \"platform\",\n          \"availability\": \"correction_required\",\n          \"correction\": \"consume_authoritative_spendable_balance\",\n          \"credentials\": [\n            \"shell_player_session\"\n          ],\n          \"errors\": [\n            \"CORRECTION_REQUIRED\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"\",\n          \"output\": \"Promise<Balance>\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"platform\",\n              \"availability\": \"correction_required\",\n              \"correction\": \"consume_authoritative_spendable_balance\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"platform\",\n              \"availability\": \"correction_required\",\n              \"correction\": \"consume_authoritative_spendable_balance\",\n              \"credentials\": [\n                \"shell_player_session\"\n              ],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"consume_authoritative_spendable_balance\"\n            },\n            \"web\": {\n              \"availability\": \"correction_required\",\n              \"bindable\": false,\n              \"correction\": \"consume_authoritative_spendable_balance\"\n            }\n          },\n          \""
    "signature\": \"() => Promise<Balance>\",\n          \"transportOwner\": \"shell\"\n        },\n        \"onBalanceChanged\": {\n          \"authority\": \"client\",\n          \"availability\": \"available\",\n          \"credentials\": [],\n          \"errors\": [\n            \"AUTH_REQUIRED\",\n            \"CAPABILITY_DENIED\",\n            \"INVALID_ARGUMENT\",\n            \"RATE_LIMITED\",\n            \"TIMEOUT\",\n            \"BACKEND_UNAVAILABLE\"\n          ],\n          \"idempotency\": \"not_applicable\",\n          \"input\": \"cb: (b: Balance) => void) => ((\",\n          \"output\": \"void)\",\n          \"profilePolicies\": {\n            \"client\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"listen\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            },\n            \"preview\": {\n              \"authority\": \"client\",\n              \"availability\": \"available\",\n              \"credentials\": [],\n              \"idempotency\": \"not_applicable\",\n              \"requiredCapabilities\": [],\n              \"transportOwner\": \"shell\"\n            }\n          },\n          \"profiles\": [\n            \"client\",\n            \"preview\",\n            \"listen\"\n          ],\n          \"requiredCapabilities\": [],\n          \"runtimeBindings\": {\n            \"unreal\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            },\n            \"web\": {\n              \"availability\": \"available\",\n              \"bindable\": true\n            }\n          },\n          \"signature\": \"(cb: (b: Balance) => void) => (() => void)\",\n          \"transportOwner\": \"shell\"\n        }\n      }\n    }\n  },\n  \"publicApi\": {\n    \"entryPoint\": \"src/index.ts\",\n    \"exports\": [\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface AbilityMessage {\\n    ability: string;\\n    active: boolean;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AbilityMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface AccessorModuleState {\\n    roomVars?: Record<string, unknown>;\\n    players?: KeyedBag<PlayerBag>;\\n    entities?: KeyedBag<EntityBag>;\\n    phase?: string;\\n    timerDeadlines?: KeyedBag<number>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-accessors.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AccessorModuleState\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface AccessorRoomState {\\n    roomVars?: Record<string, unknown>;\\n    players?: {\\n        get(id: string): PlayerBag;\\n    } | Record<string, PlayerBag>;\\n    phase?: string;\\n    modules?: Record<string, AccessorModuleState | undefined>;\\n    moduleChunks?: Record<string, Record<string, AccessorModuleState | undefined> | undefined>;\\n    dynamicModules?: KeyedBag<AccessorDynamicModuleState>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-accessors.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AccessorRoomState\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type AccountVerificationLevel = 'basic' | 'verified' | 'identity_verified' | 'business_verified';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AccountVerificationLeve"
    "l\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type AchievementListResult = {\\n    achievements: AchievementSummary[];\\n    total: number;\\n    earned: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AchievementListResult\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type AchievementMineResult = {\\n    achievements: AchievementSummary[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AchievementMineResult\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type AchievementSummary = {\\n    id: string;\\n    key: string;\\n    name: string;\\n    description: string | null;\\n    points: number;\\n    hidden: boolean;\\n    earned: boolean;\\n    rarityTier: string;\\n    earnPct: number | null;\\n    iconUrl: string | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AchievementSummary\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ActionMessage {\\n    finalRest?: {\\n        scope?: FinalRestProvenance;\\n        version: 1;\\n        requestId: number;\\n        group: string;\\n    };\\n    moduleId?: string;\\n    itemInstanceId?: string;\\n    bundleChecksumSha256?: string;\\n    moduleRevision?: number;\\n    engagement?: 'acquire' | 'release';\\n    engagementRequestId?: number;\\n    engagementEpoch?: number;\\n    name: string;\\n    args?: Record<string, RoomVarValue>;\\n    vehicleAction?: VehicleActionEnvelope;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionMessage\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ActionSurfaceAction {\\n    id: string;\\n    label: string;\\n    kind: ActionSurfaceKind;\\n    call?: string;\\n    socket?: string;\\n    enabled?: boolean;\\n    visible?: boolean;\\n    reason?: string;\\n    availability?: ActionSurfaceAvailability;\\n    value?: number | string | null;\\n    var?: string;\\n    min?: number;\\n    max?: number;\\n    step?: number;\\n    unit?: string;\\n    placeholder?: string;\\n    maxLength?: number;\\n    inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\\n    options?: readonly ActionSurfaceOption[];\\n    optionsFrom?: ActionSurfaceOptionsFrom;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceAction\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ActionSurfaceAvailability {\\n    state: 'available' | 'busy' | 'occupied';\\n    label?: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceAvailability\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ActionSurfaceDevice = 'keyboard' | 'gamepad' | 'touch';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceDevice\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ActionSurfaceHintSou"
    "rce {\\n    activeDevice(): ActionSurfaceDevice;\\n    hint(action: Extract<StandardModeAction, 'move' | 'primary' | 'cancel'>): string;\\n    subscribe?(listener: () => void): () => void;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceHintSource\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ActionSurfaceInvocation = {\\n    action: ActionSurfaceAction;\\n    kind: 'run' | 'point' | 'takeover';\\n} | {\\n    action: ActionSurfaceAction;\\n    kind: 'number';\\n    value: number;\\n} | {\\n    action: ActionSurfaceAction;\\n    kind: 'choice' | 'asset' | 'text';\\n    value: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceInvocation\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ActionSurfaceKind = 'run' | 'choice' | 'number' | 'text' | 'point' | 'asset' | 'takeover';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceKind\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ActionSurfaceModeOptions {\\n    surface: UniversalActionSurface;\\n    id?: string;\\n    suppression?: Suppression;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceModeOptions\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ActionSurfaceOption {\\n    value: string;\\n    label: string;\\n    disabled?: boolean;\\n    reason?: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceOption\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ActionSurfaceOptionsFrom {\\n    query?: {\\n        has: string;\\n        scope?: 'room' | 'world';\\n    };\\n    inventory?: {\\n        accepts: string;\\n    };\\n    var?: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceOptionsFrom\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ActionSurfaceSnapshot {\\n    instanceId: string;\\n    title: string;\\n    actions: readonly ActionSurfaceAction[];\\n    availability?: ActionSurfaceAvailability;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ActionSurfaceSnapshot\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const ANY_VERB = '*';\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"ANY_VERB\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const ATTACHMENT_LIMITS = {\\n    maxAttachments: 8,\\n    maxIdLength: 32,\\n    idPattern: /^[A-Za-z0-9][A-Za-z0-9_\\\\-.:]*$/,\\n    maxAssetUrlLength: 512,\\n    maxSocketNameLength: 64,\\n    socketNamePattern: /^[A-Za-z0-9][A-Za-z0-9_\\\\-.]*$/,\\n    maxPresetLength: 32,\\n    maxOffsetM: 2,\\n} as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer"
    "-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"ATTACHMENT_LIMITS\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface AttachmentEntry {\\n    id: string;\\n    asset: string;\\n    socket: string;\\n    position: Vec3;\\n    rotationEulerDeg: Vec3;\\n    preset: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/state.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AttachmentEntry\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface AttachmentsMessage {\\n    attachments: AttachmentEntry[];\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AttachmentsMessage\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type AvatarComposition = {\\n    compositionDigest: string;\\n    appearanceDigest: string;\\n    hostKind: 'character';\\n    appearance: {\\n        hiddenSlotIds: string[];\\n        materialOverrides: Record<string, unknown>;\\n        colorOverrides: Record<string, unknown>;\\n    };\\n    instanceThumbnailUrl: string | null;\\n    base: {\\n        itemId: string;\\n        modelUrl: string | null;\\n    };\\n    materials: Record<string, unknown>;\\n    visibleAddOns: Array<{\\n        slotId: string;\\n        itemId: string;\\n        modelUrl: string | null;\\n        visualOps: unknown[];\\n        mountSocket?: string | null;\\n        fill?: 'all' | 'each';\\n    }>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AvatarComposition\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type AvatarLoadout = {\\n    version: 1;\\n    body: UniversalAvatarBody;\\n    baseShape: AvatarBaseShape;\\n    customAvatar: EquippedAvatar;\\n    equippedSlots: AvatarLoadoutSlot[];\\n    inventory: InventoryItem[];\\n    updatedAt: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AvatarLoadout\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type AvatarLoadoutPatch = {\\n    baseShape?: AvatarBaseShape;\\n    customAvatarInventoryItemId?: string | null;\\n    equippedSlots?: Record<string, string | null>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AvatarLoadoutPatch\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type AvatarRefreshMessage = Record<string, never>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"AvatarRefreshMessage\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type Balance = {\\n    lix: number;\\n    coins: number;\\n    updatedAt?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"Balance\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function bindStackSafety(stack: ModeStack, target: EventTarget = globalThis, visibilityTarget: VisibilitySafetyTarget | null = (globalThis as {\\n    document?: VisibilitySafetyTarget;\\n}).document ?? null): () => void {\\n    const clear = () => void st"
    "ack.clear(true);\\n    const onVisibility = () => {\\n        if (visibilityTarget?.hidden)\\n            clear();\\n    };\\n    target.addEventListener('blur', clear);\\n    visibilityTarget?.addEventListener('visibilitychange', onVisibility);\\n    target.addEventListener('pagehide', clear);\\n    target.addEventListener('beforeunload', clear);\\n    return () => {\\n        target.removeEventListener('blur', clear);\\n        visibilityTarget?.removeEventListener('visibilitychange', onVisibility);\\n        target.removeEventListener('pagehide', clear);\\n        target.removeEventListener('beforeunload', clear);\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"bindStackSafety\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type BroadcastPayload = Record<string, RoomVarValue>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"BroadcastPayload\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const CAMERA_CAPABILITY_FLAGS: readonly CameraCapabilityFlag[] = [\\n    'photo',\\n    'video',\\n    'drone',\\n    'twoHandPose',\\n    'focusPoint',\\n    'exposureBias',\\n    'worldAudio',\\n];\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"CAMERA_CAPABILITY_FLAGS\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const CAMERA_LENS_PRESETS = [0.5, 1, 2, 3, 5] as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"CAMERA_LENS_PRESETS\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const CAMERA_MAX_ZOOM: number = CAMERA_LENS_PRESETS[CAMERA_LENS_PRESETS.length - 1];\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"CAMERA_MAX_ZOOM\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const CAMERA_MIN_ZOOM: number = CAMERA_LENS_PRESETS[0];\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"CAMERA_MIN_ZOOM\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraAim = {\\n    yaw: number;\\n    pitch: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraAim\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraAspect = 'portrait' | 'landscape' | 'square' | 'free';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraAspect\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraCapabilityFlag = Exclude<keyof HelixCameraCapability, 'unavailableReason'>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraCapabilityFlag\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function cameraCapabilityGate(control: HelixCameraControl, state: HelixCameraState): CameraCapabilityFlag | null {\\n    const { ca"
    "pability } = state;\\n    const media = control.media ?? state.media;\\n    const escalatesVideo = control.media === 'video' ||\\n        control.recording === true ||\\n        (control.shutter === true && media === 'video');\\n    if (escalatesVideo && !capability.video)\\n        return 'video';\\n    if (control.shutter === true && media === 'photo' && !capability.photo)\\n        return 'photo';\\n    if (control.spatial === 'drone' || control.session === 'drone') {\\n        if (!capability.drone)\\n            return 'drone';\\n    }\\n    if (control.session === 'device-hold' && !capability.twoHandPose)\\n        return 'twoHandPose';\\n    if (control.focusPoint !== undefined && !capability.focusPoint)\\n        return 'focusPoint';\\n    if (control.exposureBias !== undefined && !capability.exposureBias)\\n        return 'exposureBias';\\n    if (control.worldAudio === true && !capability.worldAudio)\\n        return 'worldAudio';\\n    return null;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"cameraCapabilityGate\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraControlTarget = 'camera' | 'avatar';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraControlTarget\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraDroneLockMode = 'free' | 'lock' | 'orbit';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraDroneLockMode\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraFilterId = 'original' | 'vivid' | 'warm' | 'cool' | 'mono';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraFilterId\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraFocusPoint = {\\n    x: number;\\n    y: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraFocusPoint\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface CameraIntent {\\n    target: {\\n        x: number;\\n        y: number;\\n        z: number;\\n    };\\n    distance: number;\\n    fov?: number;\\n    orbit?: {\\n        yawDeg: number;\\n        pitchDeg: number;\\n    };\\n    blendSeconds?: number;\\n    clamp?: {\\n        yaw?: [number, number];\\n        pitch?: [number, number];\\n    };\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraIntent\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraLensPreset = (typeof CAMERA_LENS_PRESETS)[number];\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraLensPreset\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraMediaMode = 'photo' | 'video';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraMediaMode\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraSessionState = 'inactive' | 'device-hold' | 'rear' | 'selfi"
    "e' | 'drone';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraSessionState\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraSpatialMode = 'rear' | 'selfie' | 'drone';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraSpatialMode\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraTimerSeconds = 0 | 3 | 10;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraTimerSeconds\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CameraVector3 = {\\n    x: number;\\n    y: number;\\n    z: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CameraVector3\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type Capability = ModeCapability;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"Capability\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export async function captureCanvas(source: HTMLCanvasElement, opts: CaptureOptions = {}): Promise<Blob> {\\n    const type = opts.type ?? 'image/jpeg';\\n    const quality = opts.quality ?? 0.92;\\n    const { sx, sy, sw, sh } = cropRectForAspect(source.width, source.height, opts.aspect ?? 'free');\\n    if (sw <= 0 || sh <= 0) {\\n        throw new Error('Helix.camera: nothing to capture (empty canvas)');\\n    }\\n    const out = typeof OffscreenCanvas !== 'undefined'\\n        ? new OffscreenCanvas(sw, sh)\\n        : Object.assign(document.createElement('canvas'), { width: sw, height: sh });\\n    const ctx = (out as HTMLCanvasElement).getContext('2d');\\n    if (!ctx)\\n        throw new Error('Helix.camera: 2D canvas context unavailable');\\n    ctx.drawImage(source, sx, sy, sw, sh, 0, 0, sw, sh);\\n    return canvasToBlob(out as HTMLCanvasElement, type, quality);\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"captureCanvas\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CaptureOptions = {\\n    aspect?: CameraAspect;\\n    type?: string;\\n    quality?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CaptureOptions\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function clampCameraZoom(zoom: number): number {\\n    if (!Number.isFinite(zoom))\\n        return 1;\\n    return Math.min(CAMERA_MAX_ZOOM, Math.max(CAMERA_MIN_ZOOM, zoom));\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"clampCameraZoom\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ClientMessagePayloads {\\n    [ClientMessageType.State]: StateMessage;\\n    [ClientMessageType.Ability]: AbilityMessage;\\n    [ClientMessageType.Action]: ActionMessage;\\n    [ClientMessageType.Gesture]: GestureMessage;\\n    [ClientMessageType.Attachments]: AttachmentsMessage;\\n    [ClientMessageType.PurchaseReceipt]: PurchaseReceiptMessage;\\"
    "n    [ClientMessageType.AvatarRefresh]: AvatarRefreshMessage;\\n    [ClientMessageType.EmoteRefresh]: EmoteRefreshMessage;\\n    [ClientMessageType.EmoteJoin]: EmoteJoinMessage;\\n    [ClientMessageType.EntityState]: EntityStateMessage;\\n    [ClientMessageType.EntityStateBatch]: EntityStateBatchMessage;\\n    [ClientMessageType.Ping]: PingMessage;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ClientMessagePayloads\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const ClientMessageType = {\\n    State: 'state',\\n    Ability: 'ability',\\n    Action: 'action',\\n    Gesture: 'gesture',\\n    Attachments: 'attachments',\\n    PurchaseReceipt: 'purchaseReceipt',\\n    AvatarRefresh: 'avatarRefresh',\\n    EmoteRefresh: 'emoteRefresh',\\n    EmoteJoin: 'emoteJoin',\\n    EntityState: 'entityState',\\n    EntityStateBatch: 'entityStateBatch',\\n    Ping: 'ping',\\n} as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          },\n          {\n            \"declaration\": \"export type ClientMessageType = (typeof ClientMessageType)[keyof typeof ClientMessageType];\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"ClientMessageType\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function cloneCameraCapability(capability: HelixCameraCapability): HelixCameraCapability {\\n    void CLONED_CAPABILITY_FIELDS;\\n    return {\\n        photo: capability.photo,\\n        video: capability.video,\\n        drone: capability.drone,\\n        twoHandPose: capability.twoHandPose,\\n        focusPoint: capability.focusPoint,\\n        exposureBias: capability.exposureBias,\\n        worldAudio: capability.worldAudio,\\n        ...(capability.unavailableReason !== undefined\\n            ? { unavailableReason: capability.unavailableReason }\\n            : {}),\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"cloneCameraCapability\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function cloneCameraState(state: HelixCameraState): HelixCameraState {\\n    void CLONED_STATE_FIELDS;\\n    return {\\n        session: state.session,\\n        media: state.media,\\n        spatial: state.spatial,\\n        controlTarget: state.controlTarget,\\n        lens: state.lens,\\n        zoom: state.zoom,\\n        filter: state.filter,\\n        timerSeconds: state.timerSeconds,\\n        aim: { yaw: state.aim.yaw, pitch: state.aim.pitch },\\n        shutter: {\\n            sequence: state.shutter.sequence,\\n            recording: state.shutter.recording,\\n            timerRemainingSeconds: state.shutter.timerRemainingSeconds,\\n        },\\n        capability: cloneCameraCapability(state.capability),\\n        ...(state.focusPoint ? { focusPoint: { x: state.focusPoint.x, y: state.focusPoint.y } } : {}),\\n        ...(state.exposureBias !== undefined ? { exposureBias: state.exposureBias } : {}),\\n        ...(state.drone ? { drone: cloneCameraDroneState(state.drone) } : {}),\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"cloneCameraState\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ConsumeResult = {\\n    applied: boolean;\\n    balance: number;\\n    reason?: 'insufficient';\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ConsumeResu"
    "lt\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const CONTRACT_VERSION = 34 as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/index.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"CONTRACT_VERSION\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createActionSurfaceInputMap() {\\n    return {\\n        navigate: {\\n            action: 'move' as const,\\n            label: 'Navigate',\\n            touch: { kind: 'stick' as const, zone: 'left' as const },\\n            continuous: true,\\n            repeatMs: 140,\\n        },\\n        activate: {\\n            action: 'primary' as const,\\n            label: 'Select',\\n            touch: { kind: 'tap' as const, zone: 'primary' as const },\\n        },\\n        back: {\\n            action: 'cancel' as const,\\n            label: 'Back',\\n            touch: { kind: 'button' as const, zone: 'secondary' as const },\\n        },\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createActionSurfaceInputMap\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createActionSurfaceMode(options: ActionSurfaceModeOptions): InteractionMode<void> {\\n    let unbind: Array<() => void> = [];\\n    return {\\n        id: options.id ?? 'helix.action-surface',\\n        suppress: {\\n            locomotion: true,\\n            defaultHud: true,\\n            interaction: true,\\n            ...options.suppression,\\n        },\\n        input: createActionSurfaceInputMap(),\\n        enter(ctx: ModeContext<void>) {\\n            unbind = [\\n                ctx.onVerb('navigate', (event) => options.surface.handleVerb('navigate', event)),\\n                ctx.onVerb('activate', (event) => options.surface.handleVerb('activate', event)),\\n                ctx.onVerb('back', (event) => {\\n                    const dismissingRoot = event.phase === 'start' && options.surface.mode === 'browse';\\n                    options.surface.handleVerb('back', event);\\n                    if (dismissingRoot)\\n                        ctx.release();\\n                }),\\n            ];\\n        },\\n        exit() {\\n            for (const dispose of unbind.splice(0))\\n                dispose();\\n            options.surface.endEngagement();\\n        },\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createActionSurfaceMode\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createDreamerAudioClient(options: DreamerAudioClientOptions): DreamerAudioClient {\\n    const apiOrigin = normalizeApiOrigin(options.apiBaseUrl);\\n    const dreamerBase = `${apiOrigin}/api/v1/dreamer`;\\n    const requestFetch = options.fetch ?? globalThis.fetch;\\n    if (!requestFetch) {\\n        throw new DreamerAudioCapabilityUnavailableError();\\n    }\\n    async function token(): Promise<string | null> {\\n        const source = options.accessToken;\\n        return typeof source === 'function' ? await source() : (source ?? null);\\n    }\\n    async function request<T>(path: string, init: RequestInit = {}): Promise<T> {\\n        const accessToken = await token();\\n        const headers = new Headers(init.headers);\\n        if (accessToken)\\n            headers.set('Authorization', `Bearer ${accessToken}`);\\n        const url = `${dreamerBase}${path}`;\\n        const response = await requestFetch(url, { ...init, headers });\\n        if (!response.ok) {\\n            let body = '';\\n            try {\\n                body = await response.text();\\n            }\\n            catch {\\n            }\\n          "
    "  throw new DreamerAudioApiError(response.status, url, body);\\n        }\\n        return (await response.json()) as T;\\n    }\\n    async function start(input: DreamerAudioGenerateRequest): Promise<{\\n        jobId: string;\\n        status: 'queued';\\n    }> {\\n        return request('/assets/generate', {\\n            method: 'POST',\\n            headers: { 'Content-Type': 'application/json' },\\n            body: JSON.stringify({ kind: 'audio', ...input }),\\n        });\\n    }\\n    function get(jobId: string): Promise<DreamerAudioJob> {\\n        return request(`/assets/jobs/${encodeURIComponent(jobId)}`);\\n    }\\n    async function generate(input: DreamerAudioGenerateRequest, pollOptions: DreamerAudioPollOptions = {}): Promise<DreamerAudioSucceededJob> {\\n        const accepted = await start(input);\\n        const pollIntervalMs = pollOptions.pollIntervalMs ?? options.pollIntervalMs ?? 2000;\\n        const timeoutMs = pollOptions.timeoutMs ?? options.timeoutMs ?? DREAMER_AUDIO_TIMEOUT_MS;\\n        const deadline = Date.now() + timeoutMs;\\n        while (Date.now() < deadline) {\\n            const job = await get(accepted.jobId);\\n            pollOptions.onProgress?.(job);\\n            if (job.status === 'succeeded')\\n                return job;\\n            if (job.status === 'failed') {\\n                throw new DreamerAudioJobFailedError(job);\\n            }\\n            await sleep(pollIntervalMs);\\n        }\\n        throw new DreamerAudioJobTimeoutError(accepted.jobId, timeoutMs);\\n    }\\n    async function generateAndResolve(input: DreamerAudioGenerateRequest, pollOptions: DreamerAudioPollOptions = {}): Promise<DreamerGeneratedVaultAudio> {\\n        const job = await generate(input, pollOptions);\\n        if (!job.vaultAssetId) {\\n            throw new DreamerAudioVaultUnavailableError(job);\\n        }\\n        const vault = createVaultClient({\\n            apiBaseUrl: apiOrigin,\\n            fetch: requestFetch,\\n            accessToken: options.accessToken,\\n        });\\n        const resolved = await vault.resolve<'audio'>(job.vaultAssetId);\\n        const loadPlan = vault.createLoadPlan(resolved);\\n        if (loadPlan.loader !== 'audio') {\\n            throw new Error(`HELIX Vault asset ${job.vaultAssetId} is not a loadable audio artifact.`);\\n        }\\n        return { job, resolved, loadPlan };\\n    }\\n    return { start, get, generate, generateAndResolve };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createDreamerAudioClient\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createMaterialLibrary(assetBaseUrl: string, catalog: HelixMaterialCatalog): HelixMaterialLibrary {\\n    assertCatalog(catalog);\\n    const base = trimBase(assetBaseUrl);\\n    const byId = new Map(catalog.materials.map((material) => [material.id, material]));\\n    const catalogResolutions = (Array.isArray(catalog.resolutions) ? catalog.resolutions : []).filter((tier) => !!tier && typeof tier.key === 'string' && tier.key.trim() !== '');\\n    const absoluteMaps = (maps: HelixMaterialMapPaths): HelixMaterialMapPaths => ({\\n        albedo: absoluteAssetUrl(base, maps.albedo),\\n        normal: absoluteAssetUrl(base, maps.normal),\\n        orm: absoluteAssetUrl(base, maps.orm),\\n    });\\n    const absoluteOptions = (material: HelixMaterialDefinition): HelixMaterialResolutionOption[] => materialResolutionOptions(material).map((option) => ({\\n        ...option,\\n        maps: absoluteMaps(option.maps),\\n    }));\\n    return {\\n        assetBaseUrl: base,\\n        catalog,\\n        catalogResolutions,\\n        list(query = {}) {\\n            const needle = query.query?.trim().toLowerCase() ?? '';\\n            const matches = catalog.materials.filter((material) => {\\n                if (query.category && material.category !== query.category)\\n                    return false;\\n                if (query.kind && material.kind !== query.kind)\\n     "
    "               return false;\\n                if (!needle)\\n                    return true;\\n                return [material.id, material.name, material.category, ...material.tags]\\n                    .join(' ')\\n                    .toLowerCase()\\n                    .includes(needle);\\n            });\\n            return query.limit === undefined\\n                ? matches\\n                : matches.slice(0, Math.max(0, Math.floor(query.limit)));\\n        },\\n        get(id) {\\n            return byId.get(id) ?? null;\\n        },\\n        resolutions(id) {\\n            const material = byId.get(id);\\n            return material ? absoluteOptions(material) : [];\\n        },\\n        resolve(id, options = {}) {\\n            const material = byId.get(id);\\n            if (!material)\\n                return null;\\n            const available = absoluteOptions(material);\\n            const requested = options.resolution?.trim() ?? '';\\n            const chosen = requested\\n                ? findResolutionOption(id, requested, available)\\n                : defaultResolutionOption(material, available);\\n            return {\\n                ...material,\\n                ...(chosen ? { maps: chosen.maps } : {}),\\n                ...(material.resolutions\\n                    ? {\\n                        resolutions: Object.fromEntries(available.map((option) => [\\n                            option.key,\\n                            {\\n                                ...(option.pixels === null ? {} : { pixels: option.pixels }),\\n                                maps: option.maps,\\n                            },\\n                        ])),\\n                    }\\n                    : {}),\\n                ...(chosen\\n                    ? {\\n                        resolution: {\\n                            key: chosen.key,\\n                            pixels: chosen.pixels,\\n                            available: available.map((option) => option.key),\\n                        },\\n                    }\\n                    : {}),\\n            };\\n        },\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createMaterialLibrary\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createMaterialsNamespace(fetchCatalog?: typeof fetch): {\\n    load(assetBaseUrl: string): Promise<HelixMaterialLibrary>;\\n    fromCatalog(assetBaseUrl: string, catalog: HelixMaterialCatalog): HelixMaterialLibrary;\\n    clearCache(): void;\\n} {\\n    const cache = new Map<string, Promise<HelixMaterialLibrary>>();\\n    return {\\n        load(assetBaseUrl) {\\n            const base = trimBase(assetBaseUrl);\\n            const existing = cache.get(base);\\n            if (existing)\\n                return existing;\\n            const requestFetch = fetchCatalog ?? globalThis.fetch;\\n            if (!requestFetch) {\\n                return Promise.reject(new Error('HELIX materials require a runtime with fetch support'));\\n            }\\n            const request = requestFetch(`${base}/catalog.json`)\\n                .then(async (response) => {\\n                if (!response.ok) {\\n                    throw new Error(`HELIX material catalog request failed (${response.status})`);\\n                }\\n                const catalog = (await response.json()) as unknown;\\n                assertCatalog(catalog);\\n                return createMaterialLibrary(base, catalog);\\n            })\\n                .catch((error) => {\\n                cache.delete(base);\\n                throw error;\\n            });\\n            cache.set(base, request);\\n            return request;\\n        },\\n        fromCatalog: createMaterialLibrary,\\n        clearCache() {\\n            cache.clear();\\n        },\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createMateri"
    "alsNamespace\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createModuleAccessors(sessionId: string, moduleId: string, state: () => AccessorRoomState | null | undefined): ModuleAccessors {\\n    const dynamicVars = (module: AccessorDynamicModuleState): Record<string, unknown> => {\\n        const output: Record<string, unknown> = {};\\n        const copy = <T>(bag: KeyedBag<T> | undefined, accept: (value: unknown) => value is T): void => {\\n            if (!bag)\\n                return;\\n            if (typeof (bag as {\\n                forEach?: unknown;\\n            }).forEach === 'function') {\\n                (bag as {\\n                    forEach(cb: (value: T, key: string) => void): void;\\n                }).forEach((value, key) => {\\n                    if (accept(value))\\n                        output[key] = value;\\n                });\\n                return;\\n            }\\n            for (const [key, value] of Object.entries(bag))\\n                if (accept(value))\\n                    output[key] = value;\\n        };\\n        copy(module.booleans, (value): value is boolean => typeof value === 'boolean');\\n        copy(module.numbers, (value): value is number => typeof value === 'number' && Number.isFinite(value));\\n        copy(module.strings, (value): value is string => typeof value === 'string');\\n        return output;\\n    };\\n    const current = (): AccessorModuleState | undefined => {\\n        const root = state();\\n        const wireKey = `m:${moduleId}`;\\n        const flat = root?.modules?.[wireKey];\\n        if (flat)\\n            return flat;\\n        for (let index = 0;; index++) {\\n            const chunk = root?.moduleChunks?.[`c${index}`];\\n            if (!chunk)\\n                break;\\n            const module = chunk[wireKey];\\n            if (module)\\n                return module;\\n        }\\n        const dynamic = keyedCollectionEntry<AccessorDynamicModuleState>(root?.dynamicModules, moduleId);\\n        return dynamic === undefined\\n            ? undefined\\n            : {\\n                roomVars: dynamicVars(dynamic),\\n                phase: dynamic.phase,\\n            };\\n    };\\n    const varsFor = (collection: KeyedBag<PlayerBag> | KeyedBag<EntityBag> | undefined, id: string): Record<string, unknown> | undefined => keyedCollectionEntry<PlayerBag | EntityBag>(collection, id)?.vars;\\n    return {\\n        moduleId,\\n        vars: createVarsView(() => current()?.roomVars),\\n        me: createVarsView(() => varsFor(current()?.players, sessionId)),\\n        player: (id) => createVarsView(() => varsFor(current()?.players, id)),\\n        entity: (id) => createVarsView(() => varsFor(current()?.entities, id)),\\n        phase: () => current()?.phase ?? '',\\n        timerDeadline: (name, key) => keyedCollectionEntry<number>(current()?.timerDeadlines, key === undefined ? name : `${name}|${key}`) ?? 0,\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/multiplayer-accessors.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createModuleAccessors\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createRoomAccessors(sessionId: string, state: () => AccessorRoomState | null | undefined): RoomAccessors {\\n    const vars = createVarsView(() => state()?.roomVars);\\n    const playerVars = (id: string): Record<string, unknown> | undefined => {\\n        const players = state()?.players;\\n        if (!players)\\n            return undefined;\\n        return keyedCollectionEntry<PlayerBag>(players, id)?.vars;\\n    };\\n    const player = (id: string): VarsView => createVarsView(() => playerVars(id));\\n    const currentTurn = (): string => {\\n        const order = vars.list('turnOrder');\\n        if (order.length === 0)\\n            return '';\\n        const idx = vars.num('turnIndex');\\n        const entry = order[idx];\\n        return entry === null || entry === u"
    "ndefined ? '' : String(entry);\\n    };\\n    return {\\n        vars,\\n        me: player(sessionId),\\n        player,\\n        phase: () => state()?.phase ?? '',\\n        currentTurn,\\n        isMyTurn: () => {\\n            const turn = currentTurn();\\n            return turn !== '' && turn === sessionId;\\n        },\\n        module: (moduleId) => createModuleAccessors(sessionId, moduleId, state),\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/multiplayer-accessors.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createRoomAccessors\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createSealedDeviceDefinitionResolver(projection: SealedDeviceDefinitionProjection, options: SealedDeviceDefinitionResolverOptions = {}): SealedDeviceDefinitionResolver {\\n    assertProjectionEnvelope(projection);\\n    const normalized = normalizeSealedDeviceDefinitionProjection(projection);\\n    if (normalized === null)\\n        throw new Error('Sealed Device definition is invalid');\\n    const canonical = canonicalJson(normalized.definition);\\n    const definition = normalized.definition;\\n    const expectedChecksum = normalized.definitionChecksumSha256;\\n    const expiresAtMs = normalized.expiresAtEpochSeconds * 1000;\\n    const now = options.now ?? Date.now;\\n    const sha256 = options.sha256 ?? defaultSha256;\\n    let disposed = false;\\n    let validated: Promise<DeviceDefinitionV1> | undefined;\\n    const resolver = (async (reference: DeviceDefinitionReference): Promise<DeviceDefinitionV1> => {\\n        assertActive(disposed, expiresAtMs, now);\\n        assertDefinitionIdentity(definition, reference);\\n        validated ??= (async () => {\\n            const bytes = new TextEncoder().encode(canonical);\\n            const actualChecksum = (await sha256(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer)).toLowerCase();\\n            if (!SHA256_HEX.test(actualChecksum) ||\\n                actualChecksum !== expectedChecksum) {\\n                throw new Error('Sealed Device definition checksum mismatch');\\n            }\\n            assertDefinitionIdentity(definition, reference);\\n            if (definition.compatibility !== undefined &&\\n                (!Array.isArray(definition.compatibility?.hosts) ||\\n                    !definition.compatibility.hosts.includes('world'))) {\\n                throw new Error(`Device ${definition.id} does not support World hosts`);\\n            }\\n            if (!definition.state ||\\n                typeof definition.state !== 'object' ||\\n                Array.isArray(definition.state) ||\\n                !Array.isArray(definition.interactions)) {\\n                throw new Error('Sealed Device definition structure is invalid');\\n            }\\n            return definition;\\n        })();\\n        const result = await validated;\\n        assertActive(disposed, expiresAtMs, now);\\n        return result;\\n    }) as SealedDeviceDefinitionResolver;\\n    resolver.dispose = () => {\\n        disposed = true;\\n        validated = undefined;\\n    };\\n    return resolver;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/device-definition-resolver.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createSealedDeviceDefinitionResolver\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createVarsView(source: () => VarsBag): VarsView {\\n    const read = (name: string): unknown => {\\n        if (name.charCodeAt(0) === 0x24)\\n            return undefined;\\n        const bag = source();\\n        if (bag === null || bag === undefined)\\n            return undefined;\\n        const direct = bag[name];\\n        if (direct !== undefined)\\n            return direct;\\n        return readThroughChunks(bag, name);\\n    };\\n    return {\\n        num: (name, fallback = 0) => {\\n            const v = read(nam"
    "e);\\n            return typeof v === 'number' && Number.isFinite(v) ? v : fallback;\\n        },\\n        str: (name, fallback = '') => {\\n            const v = read(name);\\n            if (typeof v === 'string')\\n                return v;\\n            return v !== null && v !== undefined && typeof v === 'object' ? String(v) : fallback;\\n        },\\n        bool: (name, fallback = false) => {\\n            const v = read(name);\\n            return typeof v === 'boolean' ? v : fallback;\\n        },\\n        vec3: (name) => {\\n            const v = read(name) as {\\n                x?: unknown;\\n                y?: unknown;\\n                z?: unknown;\\n            } | null | undefined;\\n            return v && typeof v.x === 'number' && typeof v.y === 'number' && typeof v.z === 'number'\\n                ? { x: v.x, y: v.y, z: v.z }\\n                : null;\\n        },\\n        list: <T = unknown>(name: string): T[] => {\\n            const v = read(name);\\n            if (Array.isArray(v))\\n                return v.slice() as T[];\\n            if (v !== null && v !== undefined && typeof v === 'object' && Symbol.iterator in (v as object))\\n                return [...(v as Iterable<T>)];\\n            return [];\\n        },\\n        raw: read,\\n        has: (name) => read(name) !== undefined,\\n        names: () => {\\n            const bag = source();\\n            if (bag === null || bag === undefined)\\n                return [];\\n            const logical = (o: Record<string, unknown>): string[] => Object.keys(o).filter((k) => k.charCodeAt(0) !== 0x24 && o[k] !== undefined);\\n            if (!chunkAt(bag, 0))\\n                return logical(bag);\\n            const out: string[] = [];\\n            for (let i = 0;; i++) {\\n                const chunk = chunkAt(bag, i);\\n                if (!chunk)\\n                    return out;\\n                out.push(...logical(chunk));\\n            }\\n        },\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/multiplayer-accessors.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createVarsView\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createVaultClient(options: VaultClientOptions): VaultClient {\\n    const vaultBase = normalizeVaultBase(options.apiBaseUrl);\\n    const requestFetch = options.fetch ?? globalThis.fetch;\\n    if (!requestFetch) {\\n        throw new VaultCapabilityUnavailableError('fetch');\\n    }\\n    const hasher = options.sha256 ?? defaultSha256;\\n    async function token(): Promise<string | null> {\\n        const source = options.accessToken;\\n        return typeof source === 'function' ? await source() : (source ?? null);\\n    }\\n    async function request(path: string, init: RequestInit = {}): Promise<Response> {\\n        const accessToken = await token();\\n        const headers = new Headers(init.headers);\\n        if (accessToken)\\n            headers.set('Authorization', `Bearer ${accessToken}`);\\n        const url = `${vaultBase}${path}`;\\n        const response = await requestFetch(url, { ...init, headers });\\n        if (!response.ok) {\\n            let body = '';\\n            try {\\n                body = await response.text();\\n            }\\n            catch {\\n            }\\n            throw new VaultApiError(response.status, url, body);\\n        }\\n        return response;\\n    }\\n    async function json<T>(path: string): Promise<T> {\\n        const response = await request(path);\\n        return (await response.json()) as T;\\n    }\\n    async function resolve<K extends VaultAssetKind = VaultAssetKind>(handleOrAssetId: VaultAssetHandle | string): Promise<VaultResolvedAsset<K>> {\\n        const assetId = typeof handleOrAssetId === 'string'\\n            ? handleOrAssetId\\n            : handleOrAssetId.assetId;\\n        const asset = await json<VaultAssetDetail<K>>(`/assets/${encodeURIComponent(assetId)}`);\\n        const handle = asHandle(asset, handleOrAssetId);\\n        if (handle.version === asset.artifact"
    ".version) {\\n            return {\\n                handle,\\n                asset,\\n                artifact: asset.artifact,\\n                relatedArtifactsComplete: true,\\n            };\\n        }\\n        const versionRows = await versions(assetId);\\n        const row = versionRows.find((candidate) => candidate.handle.version === handle.version);\\n        if (!row) {\\n            throw new VaultApiError(404, `${vaultBase}/assets/${encodeURIComponent(assetId)}/versions`, `Version ${handle.version} does not exist for this asset.`);\\n        }\\n        return {\\n            handle,\\n            asset,\\n            artifact: {\\n                assetId,\\n                version: handle.version,\\n                url: row.url,\\n                urlKind: row.url ? 'cdn' : 'unavailable',\\n                mimeType: row.mimeType,\\n                sizeBytes: row.sizeBytes,\\n                checksumSha256: row.checksumSha256,\\n                relatedArtifacts: [],\\n            },\\n            relatedArtifactsComplete: false,\\n        };\\n    }\\n    async function versions(assetId: string): Promise<VaultAssetVersion[]> {\\n        const response = await json<{\\n            items: Array<Omit<VaultAssetVersion, 'handle'> & {\\n                version: number;\\n            }>;\\n        }>(`/assets/${encodeURIComponent(assetId)}/versions`);\\n        return response.items.map(({ version, ...row }) => ({\\n            ...row,\\n            handle: { assetId, version },\\n        }));\\n    }\\n    async function downloadReference(reference: VaultArtifactReference, fetchUrl: string, verifyChecksum = reference.checksumSha256 !== null, useAuth = false): Promise<VaultDownloadedArtifact> {\\n        if (!reference.url && !useAuth) {\\n            throw new Error('HELIX Vault related artifact has no servable URL.');\\n        }\\n        const response = useAuth\\n            ? await request(fetchUrl)\\n            : await requestFetch(fetchUrl, { redirect: 'follow' });\\n        if (!response.ok) {\\n            let body = '';\\n            try {\\n                body = await response.text();\\n            }\\n            catch {\\n            }\\n            throw new VaultApiError(response.status, fetchUrl, body);\\n        }\\n        const bytes = await response.arrayBuffer();\\n        let checksumVerified = false;\\n        if (verifyChecksum && reference.checksumSha256) {\\n            const actual = (await hasher(bytes)).toLowerCase();\\n            const expected = reference.checksumSha256.toLowerCase();\\n            if (actual !== expected) {\\n                throw new VaultChecksumMismatchError(expected, actual);\\n            }\\n            checksumVerified = true;\\n        }\\n        return { reference, bytes, checksumVerified };\\n    }\\n    async function download(handleOrAssetId: VaultAssetHandle | string, installOptions: Pick<VaultInstallOptions, 'verifyChecksum'> = {}): Promise<VaultDownloadedArtifact> {\\n        const resolved = await resolve(handleOrAssetId);\\n        if (!resolved.artifact.url) {\\n            throw new VaultArtifactUnavailableError(resolved.handle);\\n        }\\n        const reference = primaryReference(resolved.artifact);\\n        const path = `/assets/${encodeURIComponent(resolved.handle.assetId)}/download?version=${resolved.handle.version}`;\\n        return downloadReference(reference, path, installOptions.verifyChecksum, true);\\n    }\\n    function downloadArtifact(reference: VaultArtifactReference, installOptions: Pick<VaultInstallOptions, 'verifyChecksum'> = {}): Promise<VaultDownloadedArtifact> {\\n        if (!reference.url) {\\n            return Promise.reject(new Error('HELIX Vault related artifact has no servable URL.'));\\n        }\\n        return downloadReference(reference, reference.url, installOptions.verifyChecksum);\\n    }\\n    return {\\n        search(query = {}) {\\n            return json<VaultSearchResult>(`/assets${queryString(query)}`);\\n        },\\n        get<K extends VaultAssetKind = VaultAssetKind>(assetId: string) {\\n            return json<VaultAssetDetail<K>>(`/assets/${encodeURIComponent(assetId)}`);"
    "\\n        },\\n        versions,\\n        resolve,\\n        createLoadPlan: createVaultLoadPlan,\\n        download,\\n        downloadArtifact,\\n        async install(handleOrAssetId, installOptions = {}) {\\n            const resolved = await resolve(handleOrAssetId);\\n            const plan = createVaultLoadPlan(resolved);\\n            const primary = await download(resolved.handle, installOptions);\\n            const roles = new Set(installOptions.relatedRoles ?? []);\\n            const related = await Promise.all(plan.related\\n                .filter((reference) => roles.has(reference.role))\\n                .map((reference) => downloadArtifact(reference, installOptions)));\\n            return { asset: resolved, plan, primary, related };\\n        },\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createVaultClient\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function createVaultLoadPlan(resolved: VaultResolvedAsset): VaultLoadPlan {\\n    const { asset, artifact, handle } = resolved;\\n    const mime = artifact.mimeType.toLowerCase();\\n    const primary = primaryReference(artifact);\\n    const related = relatedReferences(artifact.relatedArtifacts);\\n    if (asset.kind === 'unreal_package') {\\n        throw new VaultUnsupportedRuntimeError(asset.kind, mime, 'Unreal packages require an Unreal runtime.');\\n    }\\n    if (mime === 'model/gltf-binary' || mime === 'model/gltf+json') {\\n        const purpose = asset.kind === 'character' ||\\n            asset.kind === 'animation' ||\\n            asset.kind === 'environment' ||\\n            asset.kind === 'terrain'\\n            ? asset.kind\\n            : 'prop';\\n        return { loader: 'gltf', purpose, handle, primary, related };\\n    }\\n    if (mime === 'image/png' ||\\n        mime === 'image/jpeg' ||\\n        mime === 'image/webp' ||\\n        mime === 'image/ktx2') {\\n        if (asset.kind !== 'texture' && asset.kind !== 'decal') {\\n            throw new VaultUnsupportedRuntimeError(asset.kind, mime, 'Image artifacts are only valid as texture or decal resources.');\\n        }\\n        return {\\n            loader: 'image',\\n            purpose: asset.kind,\\n            handle,\\n            primary,\\n            related,\\n        };\\n    }\\n    if (mime.startsWith('audio/')) {\\n        return { loader: 'audio', purpose: 'audio', handle, primary, related };\\n    }\\n    if (mime === 'image/vnd.radiance' || mime === 'image/x-exr') {\\n        return {\\n            loader: 'hdr-environment',\\n            purpose: 'sky',\\n            format: mime === 'image/vnd.radiance' ? 'hdr' : 'exr',\\n            handle,\\n            primary,\\n            related,\\n        };\\n    }\\n    if (mime === 'model/vnd.gaussian-splat.spz') {\\n        return {\\n            loader: 'gaussian-splat',\\n            purpose: asset.kind === 'environment' ? 'environment' : 'gaussian_splat',\\n            format: 'spz',\\n            scope: splatScope(asset),\\n            handle,\\n            primary,\\n            related,\\n        };\\n    }\\n    const descriptors: Partial<Record<string, {\\n        purpose: Extract<VaultLoadPlan, {\\n            loader: 'helix-descriptor';\\n        }>['purpose'];\\n        schema: Extract<VaultLoadPlan, {\\n            loader: 'helix-descriptor';\\n        }>['schema'];\\n    }>> = {\\n        'application/vnd.helix.material+json': {\\n            purpose: 'material',\\n            schema: 'helix-material@1',\\n        },\\n        'application/vnd.helix.scene+json': {\\n            purpose: 'scene',\\n            schema: 'helix-scene@1',\\n        },\\n        'application/vnd.helix.terrain+json': {\\n            purpose: 'terrain',\\n            schema: 'helix-terrain@1',\\n        },\\n        'application/vnd.helix.vfx+json': {\\n            purpose: 'vfx',\\n            schema: 'helix-vfx@1',\\n        },\\n        'application/vnd.helix.sky+json': {\\n            purpose: 'sky',\\n            schema: 'h"
    "elix-sky@1',\\n        },\\n    };\\n    const descriptor = descriptors[mime];\\n    if (descriptor) {\\n        return {\\n            loader: 'helix-descriptor',\\n            ...descriptor,\\n            handle,\\n            primary,\\n            related,\\n        };\\n    }\\n    throw new VaultUnsupportedRuntimeError(asset.kind, mime, 'No format adapter is registered for this artifact.');\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"createVaultLoadPlan\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type CropRect = {\\n    sx: number;\\n    sy: number;\\n    sw: number;\\n    sh: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"CropRect\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function cropRectForAspect(w: number, h: number, aspect: CameraAspect = 'free'): CropRect {\\n    if (w <= 0 || h <= 0)\\n        return { sx: 0, sy: 0, sw: Math.max(0, w), sh: Math.max(0, h) };\\n    if (aspect === 'free')\\n        return { sx: 0, sy: 0, sw: w, sh: h };\\n    const target = aspect === 'square' ? 1 : ASPECT_RATIO[aspect];\\n    const current = w / h;\\n    let sw = w;\\n    let sh = h;\\n    if (current > target) {\\n        sw = Math.round(h * target);\\n    }\\n    else {\\n        sh = Math.round(w / target);\\n    }\\n    const sx = Math.round((w - sw) / 2);\\n    const sy = Math.round((h - sh) / 2);\\n    return { sx, sy, sw, sh };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"cropRectForAspect\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DataStoreListOptions = {\\n    cursor?: string;\\n    limit?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DataStoreListOptions\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DataStoreListPage = {\\n    keys: string[];\\n    nextCursor?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DataStoreListPage\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DataStoreListPayload = {\\n    prefix?: string;\\n    cursor?: string;\\n    limit?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DataStoreListPayload\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DataStoreWriteOptions = {\\n    expectedVersion?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DataStoreWriteOptions\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DebugLogEntry = {\\n    level: DebugLogLevel;\\n    args: string[];\\n    t: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DebugLogEntry\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DebugLogLevel = 'log' | 'info' | 'warn' | 'error' | 'debug';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n     "
    "   \"kind\": \"type\",\n        \"name\": \"DebugLogLevel\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const DEFAULT_MATERIAL_PACK_SLUG = 'helix-materials';\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"DEFAULT_MATERIAL_PACK_SLUG\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const DEFAULT_PUSH_TO_TALK_KEY = 'n';\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/voice.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"DEFAULT_PUSH_TO_TALK_KEY\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function defaultCameraCapability(): HelixCameraCapability {\\n    return {\\n        photo: false,\\n        video: false,\\n        drone: false,\\n        twoHandPose: false,\\n        focusPoint: false,\\n        exposureBias: false,\\n        worldAudio: false,\\n        unavailableReason: 'the runtime has not reported camera capability yet',\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"defaultCameraCapability\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function defaultCameraState(): HelixCameraState {\\n    return {\\n        session: 'inactive',\\n        media: 'photo',\\n        spatial: 'rear',\\n        controlTarget: 'camera',\\n        lens: 1,\\n        zoom: 1,\\n        filter: 'original',\\n        timerSeconds: 0,\\n        aim: { yaw: 0, pitch: 0 },\\n        shutter: { sequence: 0, recording: false, timerRemainingSeconds: 0 },\\n        capability: defaultCameraCapability(),\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"defaultCameraState\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface DeviceAppDefinitionV1 {\\n    type: DeviceAppTypeV1;\\n    entry?: string;\\n    allowedOrigins?: string[];\\n    permissions?: DeviceAppPermissionV1[];\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceAppDefinitionV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DeviceAppPermissionV1 = 'web.content' | 'network.fetch' | 'web.externalNavigation' | 'audio.media';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceAppPermissionV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DeviceAppTypeV1 = 'localWeb' | 'remoteWeb' | 'youtube' | 'canvas' | 'remoteImage' | 'ownerImage';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceAppTypeV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface DeviceBusBudgetsV1 {\\n    maxGraphLinks: number;\\n    maxLinksPerEndpoint: number;\\n    maxHopsPerDelivery: number;\\n    maxQueuedDeliveriesPerTick: number;\\n    maxDeliveriesPerLinkPerTick: number;\\n    replayWindow: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceBusBudgetsV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"de"
    "claration\": \"export interface DeviceBusEnvelopeV1<T = unknown> {\\n    schemaVersion: 1;\\n    deliveryId: string;\\n    linkId: string;\\n    source: DevicePortAddressV1;\\n    target: DevicePortAddressV1;\\n    kind: DevicePortKindV1;\\n    semantic: string;\\n    hostSequence: number;\\n    hopCount: number;\\n    payload?: T;\\n    stream?: {\\n        status: DeviceStreamRoutabilityV1;\\n        handle?: DeviceStreamHandleV1;\\n        mediaKind: 'audio' | 'video';\\n    };\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceBusEnvelopeV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DeviceDefinitionReference = {\\n    id: string;\\n    version: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceDefinitionReference\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface DeviceDefinitionV1 {\\n    format: 'helix.device';\\n    formatVersion: 1;\\n    id: string;\\n    version: string;\\n    state: Record<string, {\\n        type: 'boolean' | 'integer' | 'float' | 'string' | 'enum';\\n        default?: string | number | boolean;\\n        persist?: boolean;\\n    }>;\\n    interactions: Array<{\\n        id: string;\\n        label: string;\\n        verb?: 'use' | 'open' | 'close' | 'toggle' | 'play' | 'sit' | 'custom';\\n        maxDistanceM?: number;\\n        presentation?: {\\n            kind: 'webPanel';\\n            app: string;\\n        };\\n        control?: {\\n            kind: 'number';\\n            stateKey: string;\\n            min?: number;\\n            max?: number;\\n            step?: number;\\n            unit?: string;\\n        } | {\\n            kind: 'choice';\\n            stateKey: string;\\n            options: Array<{\\n                value: string;\\n                label: string;\\n                disabled?: boolean;\\n                reason?: string;\\n            }>;\\n        } | {\\n            kind: 'text';\\n            stateKey: string;\\n            placeholder?: string;\\n            maxLength?: number;\\n            inputMode?: ActionSurfaceAction['inputMode'];\\n        };\\n    }>;\\n    compatibility?: {\\n        hosts: Array<'home' | 'world'>;\\n        requiredCapabilities?: string[];\\n    };\\n    capabilities?: string[];\\n    ports?: DevicePortV1[];\\n    apps?: Record<string, DeviceAppDefinitionV1>;\\n    [key: string]: unknown;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceDefinitionV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface DevicePortAddressV1 {\\n    instanceId: string;\\n    port: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DevicePortAddressV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DevicePortAuthorityV1 = 'local' | 'server';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DevicePortAuthorityV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DevicePortDataTypeV1 = 'boolean' | 'number' | 'string' | 'media.audio' | 'media.video';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DevicePortDataTypeV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"de"
    "claration\": \"export type DevicePortDirectionV1 = 'input' | 'output' | 'bidirectional';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DevicePortDirectionV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DevicePortKindV1 = 'value' | 'event' | 'command' | 'stream';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DevicePortKindV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface DevicePortV1 {\\n    id: string;\\n    direction: DevicePortDirectionV1;\\n    kind: DevicePortKindV1;\\n    dataType: DevicePortDataTypeV1;\\n    interface?: string;\\n    semantic?: string;\\n    authority?: DevicePortAuthorityV1;\\n    stateKey?: string;\\n    autoPair?: boolean;\\n    maxLinks?: number;\\n    routability?: DeviceStreamRoutabilityV1;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DevicePortV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DeviceStreamHandleV1 = string & {\\n    readonly __deviceStreamHandleV1: unique symbol;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceStreamHandleV1\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DeviceStreamRoutabilityV1 = 'routable' | 'embedded-only' | 'unavailable';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceStreamRoutabilityV1\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DeviceTrialSpawn = Readonly<{\\n    placementId: string;\\n    itemId: string;\\n    kind: 'device';\\n    name: string;\\n    modelUrl: string | null;\\n    transform: Readonly<{\\n        position: readonly [number, number, number];\\n        yawDeg: number;\\n        scale: number;\\n    }>;\\n    expiresAt: number;\\n    deviceDefinition: Readonly<{\\n        id: string;\\n        version: string;\\n    }>;\\n    definition: DeviceDefinitionV1;\\n    definitionChecksumSha256: string;\\n    functionalPin: Readonly<{\\n        continuumPackageId: string;\\n        continuumPackageVersion: string;\\n        continuumManifestCid: string;\\n    }>;\\n    composition: unknown;\\n}>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DeviceTrialSpawn\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const DISTRIBUTION_CAPABILITY_MESSAGE = 'distributionCapability';\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"DISTRIBUTION_CAPABILITY_MESSAGE\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const DISTRIBUTION_CAPABILITY_RESULT = 'distributionCapabilityResult';\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"DISTRIBUTION_CAPABILITY_RESULT\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DistributionCapabilityRequestMessage = {\\n    requestId: string;\\n    ref: string;\\n};\",\n            \"kind\":"
    " \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DistributionCapabilityRequestMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DistributionCapabilityResultMessage = {\\n    requestId: string;\\n    capability: string;\\n    expiresAt: string;\\n    ref: string;\\n} | {\\n    requestId: string;\\n    error: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DistributionCapabilityResultMessage\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const DREAMER_AUDIO_TIMEOUT_MS = 30 * 60000;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"DREAMER_AUDIO_TIMEOUT_MS\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class DreamerAudioApiError extends Error {\\n    constructor(readonly status: number, readonly url: string, readonly responseBody: string) {\\n        super(`HELIX Dreamer audio request failed (${status})${responseBody ? `: ${responseBody}` : ''}`);\\n        this.name = 'DreamerAudioApiError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"DreamerAudioApiError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioArtifact = {\\n    url: string;\\n    contentType: string;\\n    sizeBytes: number;\\n    kind: 'audio';\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioArtifact\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class DreamerAudioCapabilityUnavailableError extends Error {\\n    constructor() {\\n        super('HELIX Dreamer audio requires Fetch API support in this runtime.');\\n        this.name = 'DreamerAudioCapabilityUnavailableError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"DreamerAudioCapabilityUnavailableError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioClient = {\\n    start(input: DreamerAudioGenerateRequest): Promise<{\\n        jobId: string;\\n        status: 'queued';\\n    }>;\\n    get(jobId: string): Promise<DreamerAudioJob>;\\n    generate(input: DreamerAudioGenerateRequest, options?: DreamerAudioPollOptions): Promise<DreamerAudioSucceededJob>;\\n    generateAndResolve(input: DreamerAudioGenerateRequest, options?: DreamerAudioPollOptions): Promise<DreamerGeneratedVaultAudio>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioClient\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioClientOptions = {\\n    apiBaseUrl: string;\\n    fetch?: typeof fetch;\\n    accessToken?: string | null | (() => string | null | Promise<string | null>);\\n    pollIntervalMs?: number;\\n    timeoutMs?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioClientOptions\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n     "
    "       \"declaration\": \"export type DreamerAudioFailedJob = DreamerAudioJobBase & {\\n    status: 'failed';\\n    error?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioFailedJob\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioGenerateRequest = DreamerSoundEffectRequest | DreamerMusicRequest | DreamerTextToSpeechRequest;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioGenerateRequest\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioGenerationMode = 'sound_effect' | 'music' | 'text_to_speech';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioGenerationMode\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioJob = DreamerAudioPendingJob | DreamerAudioFailedJob | DreamerAudioSucceededJob;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioJob\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class DreamerAudioJobFailedError extends Error {\\n    constructor(readonly job: DreamerAudioFailedJob) {\\n        super(`HELIX Dreamer audio job ${job.jobId} failed: ${job.error ?? 'no details'}`);\\n        this.name = 'DreamerAudioJobFailedError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"DreamerAudioJobFailedError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class DreamerAudioJobTimeoutError extends Error {\\n    constructor(readonly jobId: string, readonly timeoutMs: number) {\\n        super(`HELIX Dreamer audio job ${jobId} timed out after ${timeoutMs}ms.`);\\n        this.name = 'DreamerAudioJobTimeoutError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"DreamerAudioJobTimeoutError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioPendingJob = DreamerAudioJobBase & {\\n    status: 'queued' | 'running';\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioPendingJob\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioPollOptions = {\\n    pollIntervalMs?: number;\\n    timeoutMs?: number;\\n    onProgress?: (job: DreamerAudioJob) => void;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioPollOptions\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioSucceededJob = DreamerAudioJobBase & {\\n    status: 'succeeded';\\n    asset: DreamerAudioArtifact;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioSucceededJob\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"d"
    "eclaration\": \"export class DreamerAudioVaultUnavailableError extends Error {\\n    constructor(readonly job: DreamerAudioSucceededJob) {\\n        super(`HELIX Dreamer audio job ${job.jobId} succeeded without a published Vault asset.`);\\n        this.name = 'DreamerAudioVaultUnavailableError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"DreamerAudioVaultUnavailableError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerAudioVoiceSettings = {\\n    stability?: number;\\n    similarityBoost?: number;\\n    style?: number;\\n    speed?: number;\\n    speakerBoost?: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerAudioVoiceSettings\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerGeneratedVaultAudio = {\\n    job: DreamerAudioSucceededJob;\\n    resolved: VaultResolvedAsset<'audio'>;\\n    loadPlan: Extract<VaultLoadPlan, {\\n        loader: 'audio';\\n    }>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerGeneratedVaultAudio\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerMusicRequest = DreamerAudioRequestBase & {\\n    audioMode: 'music';\\n    prompt: string;\\n    durationSeconds?: number;\\n    forceInstrumental?: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerMusicRequest\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerSoundEffectRequest = DreamerAudioRequestBase & {\\n    audioMode: 'sound_effect';\\n    prompt: string;\\n    durationSeconds?: number;\\n    loop?: boolean;\\n    promptInfluence?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerSoundEffectRequest\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type DreamerTextToSpeechRequest = DreamerAudioRequestBase & {\\n    audioMode: 'text_to_speech';\\n    text: string;\\n    voiceId: string;\\n    languageCode?: string;\\n    seed?: number;\\n    voiceSettings?: DreamerAudioVoiceSettings;\\n    pronunciationDictionaryIds?: string[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/dreamerAudio.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DreamerTextToSpeechRequest\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface DynamicModuleState {\\n    phase: string;\\n    externalRevision: number;\\n    booleans: Record<string, boolean>;\\n    numbers: Record<string, number>;\\n    strings: Record<string, string>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/room.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"DynamicModuleState\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const EMOTE_LIMITS = {\\n    maxEntries: 10,\\n    maxClipUrlLength: 512,\\n    maxLabelLength: 64,\\n    maxPairOffsetM: 3,\\n    maxOfferAtS: 600,\\n} as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"EMOTE_LIMITS\"\n      },\n      {\n        \"c"
    "ategory\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface EmoteEntry {\\n    slot: 'r0' | 'r1' | 'r2' | 'r3' | 'r4' | 'r5' | 'r6' | 'r7' | 'sit' | 'lie';\\n    itemId: string;\\n    clip: string;\\n    playback: 'oneshot' | 'loop';\\n    audio?: string;\\n    label?: string;\\n    intro?: string;\\n    outro?: string;\\n    roles?: {\\n        joinerClip: string;\\n        offerAtS: number;\\n        offsetX: number;\\n        offsetZ: number;\\n        offsetYawDeg: number;\\n    };\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/state.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EmoteEntry\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface EmoteJoinMessage {\\n    initiator: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EmoteJoinMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type EmoteRefreshMessage = Record<string, never>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EmoteRefreshMessage\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type Entitlements = {\\n    v: 1;\\n    passes: Record<string, {\\n        since: number;\\n        expiresAt: number | null;\\n        active: boolean;\\n    }>;\\n    balances: Record<string, number>;\\n    owned: Record<string, number>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"Entitlements\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface EntityState {\\n    id: string;\\n    kind: string;\\n    vehicleSeats?: Record<string, string>;\\n    position?: Vec3;\\n    velocity?: Vec3;\\n    angularVelocity?: Vec3;\\n    orientation?: Quat;\\n    controller: string;\\n    authorityEpoch: number;\\n    vars: RoomVars & {\\n        readonly vDetachBits?: number;\\n    };\\n    posT: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/room.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EntityState\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface EntityStateAckEntry {\\n    e: string;\\n    seq: number;\\n    p: [number, number, number];\\n    lv?: [number, number, number];\\n    q?: [number, number, number, number];\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EntityStateAckEntry\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface EntityStateAckMessage {\\n    moduleId?: string;\\n    acks: EntityStateAckEntry[];\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EntityStateAckMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface EntityStateBatchEntry {\\n    transactionId?: string;\\n    e: string;\\n    p: [number, number, number];\\n    lv?: [number, number, number];\\n    av?: [number, number, number];\\n    q?: [number, number, number, number];\\n    v?: Record<string, RoomVarValue>;\\n    ep?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \""
    "source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EntityStateBatchEntry\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface EntityStateBatchMessage {\\n    finalRest?: {\\n        scope?: FinalRestProvenance;\\n        version: 1;\\n        requestId: number;\\n        group: string;\\n        transactionId: string;\\n    };\\n    moduleId?: string;\\n    seq: number;\\n    states: EntityStateBatchEntry[];\\n    tMs?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EntityStateBatchMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface EntityStateMessage {\\n    transactionId?: string;\\n    moduleId?: string;\\n    entity: string;\\n    seq: number;\\n    position: Vec3;\\n    velocity?: Vec3;\\n    angularVelocity?: Vec3;\\n    orientation?: Quat;\\n    vars?: Record<string, RoomVarValue>;\\n    epoch?: number;\\n    tMs?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EntityStateMessage\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type EquippedAvatar = {\\n    source: 'equipped' | 'auto' | 'default' | 'trial';\\n    inventoryItemId?: string | null;\\n    itemId: string | null;\\n    glbUrl: string | null;\\n    contentHash?: string | null;\\n    skeleton: string | null;\\n    composition?: AvatarComposition | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EquippedAvatar\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type EquippedEmote = {\\n    slot: 'r0' | 'r1' | 'r2' | 'r3' | 'r4' | 'r5' | 'r6' | 'r7' | 'sit' | 'lie';\\n    itemId: string;\\n    clip: string;\\n    playback: 'oneshot' | 'loop';\\n    audio?: string;\\n    label?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EquippedEmote\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type EquippedEmotes = {\\n    emotes: EquippedEmote[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EquippedEmotes\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type EquippedLocomotionPack = {\\n    pack: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"EquippedLocomotionPack\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const FINAL_REST_REPLY = '__helix:finalRest';\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"FINAL_REST_REPLY\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const FINAL_REST_TIMEOUT_MS = 120000;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"FINAL_REST_TIMEOUT_MS\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface "
    "FinalRestGrant {\\n    scope?: FinalRestProvenance;\\n    version: 1;\\n    status: 'claimed';\\n    group: string;\\n    requestId: number;\\n    transactionId: string;\\n    members: FinalRestMember[];\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"FinalRestGrant\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const finalRestId = (v: unknown): v is string => typeof v === 'string' && /^[a-zA-Z0-9_.:-]{1,128}$/.test(v);\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"finalRestId\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface FinalRestMember {\\n    id: string;\\n    epoch: number;\\n    position: Vec3;\\n    velocity: Vec3;\\n    angularVelocity: Vec3;\\n    orientation: Quat;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"FinalRestMember\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface FinalRestProvenance extends FinalRestScope {\\n    generation: number;\\n    engagementEpoch?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"FinalRestProvenance\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type FinalRestReply = FinalRestGrant | {\\n    scope?: FinalRestProvenance;\\n    version: 1;\\n    status: 'rejected' | 'invalidated';\\n    group: string;\\n    requestId: number;\\n    transactionId?: string;\\n    reason: string;\\n    entries?: Array<{\\n        id: string;\\n        accepted: boolean;\\n    }>;\\n} | {\\n    scope?: FinalRestProvenance;\\n    version: 1;\\n    status: 'committed';\\n    group: string;\\n    requestId: number;\\n    transactionId: string;\\n    snapshot: GroupRestSnapshotMessage;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"FinalRestReply\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface FinalRestScope {\\n    moduleId: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"FinalRestScope\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const finalRestScopeKey = (group: string, scope?: FinalRestScope): string => scope === undefined ? group : `m:${scope.moduleId}|${group}`;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"finalRestScopeKey\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const finalRestSequence = (v: unknown): v is number => Number.isSafeInteger(v) && (v as number) > 0;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"finalRestSequence\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const GESTURE_LIMITS = {\\n    maxClipNameLength: 64,\\n    clipNamePattern: /^[A-Za-z0-9][A-Za-z0-9_\\\\-.:]*$/,\\n} as con"
    "st;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"GESTURE_LIMITS\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface GestureEventMessage {\\n    player: string;\\n    clip: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"GestureEventMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface GestureMessage {\\n    clip: string;\\n    play: GesturePlay;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"GestureMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type GesturePlay = 'oneshot' | 'loop' | 'stop';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"GesturePlay\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface GroupRestSnapshotEntity {\\n    epoch?: number;\\n    velocity?: Vec3;\\n    angularVelocity?: Vec3;\\n    id: string;\\n    pos: Vec3;\\n    rot: Quat;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"GroupRestSnapshotEntity\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface GroupRestSnapshotMessage {\\n    scope?: FinalRestProvenance;\\n    commit?: {\\n        version: 1;\\n        transactionId: string;\\n        requestId: number;\\n    };\\n    group: string;\\n    seq: number;\\n    entities: GroupRestSnapshotEntity[];\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"GroupRestSnapshotMessage\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const Helix = new HelixSdk();\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/index.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"Helix\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixCameraCapability = {\\n    photo: boolean;\\n    video: boolean;\\n    drone: boolean;\\n    twoHandPose: boolean;\\n    focusPoint: boolean;\\n    exposureBias: boolean;\\n    worldAudio: boolean;\\n    unavailableReason?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixCameraCapability\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixCameraControl = {\\n    session?: CameraSessionState;\\n    media?: CameraMediaMode;\\n    spatial?: CameraSpatialMode;\\n    controlTarget?: CameraControlTarget;\\n    zoom?: number;\\n    filter?: CameraFilterId;\\n    timerSeconds?: CameraTimerSeconds;\\n    aim?: CameraAim;\\n    focusPoint?: CameraFocusPoint;\\n    exposureBias?: number;\\n    shutter?: boolean;\\n    recording?: boolean;\\n    worldAudio?: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixCameraControl\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n"
    "          {\n            \"declaration\": \"export type HelixCameraDroneCommand = {\\n    lockMode?: CameraDroneLockMode;\\n    subjectUserId?: string;\\n    transform?: HelixCameraDroneTransform;\\n    velocity?: CameraVector3;\\n    interpolationSeconds?: number;\\n    returnToAvatar?: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixCameraDroneCommand\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixCameraDroneState = {\\n    droneId: string;\\n    transform: HelixCameraDroneTransform;\\n    velocity: CameraVector3;\\n    interpolationSeconds: number;\\n    lockMode: CameraDroneLockMode;\\n    subjectUserId: string;\\n    returning: boolean;\\n    returnDistance: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixCameraDroneState\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixCameraDroneTransform = {\\n    position: CameraVector3;\\n    yaw: number;\\n    pitch: number;\\n    roll: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixCameraDroneTransform\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixCameraShutter = {\\n    sequence: number;\\n    recording: boolean;\\n    timerRemainingSeconds: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixCameraShutter\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixCameraState = {\\n    session: CameraSessionState;\\n    media: CameraMediaMode;\\n    spatial: CameraSpatialMode;\\n    controlTarget: CameraControlTarget;\\n    lens: CameraLensPreset;\\n    zoom: number;\\n    filter: CameraFilterId;\\n    timerSeconds: CameraTimerSeconds;\\n    aim: CameraAim;\\n    shutter: HelixCameraShutter;\\n    capability: HelixCameraCapability;\\n    focusPoint?: CameraFocusPoint;\\n    exposureBias?: number;\\n    drone?: HelixCameraDroneState;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixCameraState\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixDeviceFormFactor = 'phone' | 'tablet';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixDeviceFormFactor\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixDeviceState = {\\n    open: boolean;\\n    form?: HelixDeviceFormFactor;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixDeviceState\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixInitResult = {\\n    embedded: boolean;\\n    world: HelixWorldContext | null;\\n    user: HelixUser | null;\\n    runtimeFidelity: RuntimeFidelityIntent | null;\\n    customizerSubject: PackageCustomizerSubject | null;\\n    customizerSource: PackageCustomizerSource | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/index.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixInitResult\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\":"
    " \"export type HelixInteractionPrompt = {\\n    id: string;\\n    title: string;\\n    description?: string;\\n    input?: {\\n        key?: string;\\n        button?: string;\\n        label?: string;\\n    };\\n    actionLabel?: string;\\n    state?: HelixPromptState;\\n    priority?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixInteractionPrompt\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class HelixMatchmakingError extends Error {\\n    readonly code: HelixMatchmakingErrorCode;\\n    readonly status: number | null;\\n    readonly backendCode: string | null;\\n    readonly match: MatchFound | null;\\n    readonly memberUserId: string | null;\\n    constructor(code: HelixMatchmakingErrorCode, message: string, status: number | null = null, backendCode: string | null = null, cause?: unknown, match: MatchFound | null = null, memberUserId: string | null = null) {\\n        super(message, cause === undefined ? undefined : { cause });\\n        this.name = 'HelixMatchmakingError';\\n        this.code = code;\\n        this.status = status;\\n        this.backendCode = backendCode;\\n        this.match = match;\\n        this.memberUserId = memberUserId;\\n        Object.setPrototypeOf(this, HelixMatchmakingError.prototype);\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"HelixMatchmakingError\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMatchmakingErrorCode = 'unknown-queue' | 'already-queued' | 'already-matched' | 'not-party-leader' | 'party-too-large' | 'party-changed' | 'guests-cannot-queue' | 'rate-limited' | 'missing-permission' | 'unavailable' | 'not-ready' | 'invalid-argument' | 'request-failed';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMatchmakingErrorCode\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMaterialCatalog = {\\n    schemaVersion: number | string;\\n    pack: {\\n        slug: string;\\n        version: string;\\n    };\\n    resolutions?: HelixMaterialResolutionTier[];\\n    materials: HelixMaterialDefinition[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMaterialCatalog\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMaterialDefinition = {\\n    id: string;\\n    name: string;\\n    category: string;\\n    kind: HelixMaterialKind;\\n    tags: string[];\\n    repeatPerMeter: number;\\n    roughness: number;\\n    metalness: number;\\n    swatch: string;\\n    normalScale: number;\\n    maps?: HelixMaterialMapPaths;\\n    defaultResolution?: string;\\n    resolutions?: Record<string, HelixMaterialResolutionVariant>;\\n    source?: {\\n        provider?: string;\\n        assetId?: string;\\n        license?: string;\\n        url?: string;\\n        sourceResolution?: string;\\n        [key: string]: unknown;\\n    };\\n    glass?: {\\n        color: number;\\n        opacity: number;\\n        transmission: number;\\n    };\\n    water?: {\\n        color: number;\\n        opacity: number;\\n        transmission: number;\\n        roughness: number;\\n        waveScale?: number;\\n        waveSpeed?: number;\\n    };\\n    tiling?: {\\n        technique?: string;\\n        wrap?: number;\\n        accepted?: boolean;\\n        measuredAt?: string;\\n        wrapBefore?: number;\\n        wrapAfter?: number;\\n        bandAfter?: number;\\n        [key: string]: unknown;\\n    };\\n    [key: string]: unknown;\\n};\",\n            \"kind\": \"TypeAliasDeclar"
    "ation\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMaterialDefinition\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMaterialKind = 'texture' | 'glass' | 'procedural_water';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMaterialKind\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMaterialLibrary = {\\n    readonly assetBaseUrl: string;\\n    readonly catalog: HelixMaterialCatalog;\\n    readonly catalogResolutions: HelixMaterialResolutionTier[];\\n    list(query?: HelixMaterialQuery): HelixMaterialDefinition[];\\n    get(id: string): HelixMaterialDefinition | null;\\n    resolutions(id: string): HelixMaterialResolutionOption[];\\n    resolve(id: string, options?: {\\n        resolution?: string;\\n    }): ResolvedHelixMaterial | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMaterialLibrary\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMaterialMapPaths = {\\n    albedo: string;\\n    normal: string;\\n    orm: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMaterialMapPaths\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMaterialQuery = {\\n    query?: string;\\n    category?: string;\\n    kind?: HelixMaterialKind;\\n    limit?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMaterialQuery\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMaterialResolutionOption = {\\n    key: string;\\n    pixels: number | null;\\n    maps: HelixMaterialMapPaths;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMaterialResolutionOption\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMaterialResolutionTier = {\\n    key: string;\\n    pixels?: number;\\n    default?: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMaterialResolutionTier\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMaterialResolutionVariant = {\\n    pixels?: number;\\n    maps: HelixMaterialMapPaths;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMaterialResolutionVariant\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMultiplayerRosterEntry = {\\n    sessionId: string;\\n    userId: string;\\n    displayName: string;\\n    avatarUrl: string;\\n    isSelf: boolean;\\n    connected: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMultiplayerRosterEntry\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixMultiplayerState = {\\n    roomId: string;\\n    sessionId: string;\\n    playerCount: n"
    "umber;\\n    maxPlayers: number | null;\\n    players: HelixMultiplayerRosterEntry[];\\n    roomType?: string;\\n    ticketed?: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixMultiplayerState\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixNotification = {\\n    kind: HelixNotificationKind;\\n    title: string;\\n    message?: string;\\n    timeoutMs?: number;\\n    actionLabel?: string;\\n    actionHref?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixNotification\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixNotificationKind = 'success' | 'failure' | 'notification' | 'message';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixNotificationKind\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class HelixPartyError extends Error {\\n    readonly code: HelixPartyErrorCode;\\n    readonly status: number | null;\\n    readonly backendCode: string | null;\\n    constructor(code: HelixPartyErrorCode, message: string, status: number | null = null, backendCode: string | null = null, cause?: unknown) {\\n        super(message, cause === undefined ? undefined : { cause });\\n        this.name = 'HelixPartyError';\\n        this.code = code;\\n        this.status = status;\\n        this.backendCode = backendCode;\\n        Object.setPrototypeOf(this, HelixPartyError.prototype);\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"HelixPartyError\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixPartyErrorCode = 'not-party-leader' | 'cannot-invite' | 'party-full' | 'too-many-invites' | 'already-in-party' | 'party-changed' | 'not-in-party' | 'unknown-party-member' | 'invite-not-found' | 'invite-expired' | 'code-not-found' | 'guests-cannot-party' | 'rate-limited' | 'missing-permission' | 'unavailable' | 'not-ready' | 'invalid-argument' | 'request-failed';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixPartyErrorCode\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixPresenceActivity = {\\n    state: string;\\n    details?: string;\\n    image?: string;\\n    party?: {\\n        current: number;\\n        max: number;\\n    };\\n    joinable?: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixPresenceActivity\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixPromptState = 'default' | 'available' | 'locked' | 'busy';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixPromptState\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class HelixRequestError extends Error {\\n    readonly code?: string;\\n    constructor(message: string, code?: string) {\\n        super(message);\\n        this.name = 'HelixRequestError';\\n        this.code = code;\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/index.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n    "
    "    \"name\": \"HelixRequestError\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface HelixRoom {\\n    claimPhysicsGroup(action: string, group: string, args?: Record<string, RoomVarValue>, scope?: FinalRestScope): Promise<FinalRestGrant>;\\n    commitPhysicsGroup(transactionId: string, states: readonly EntityStateBatchEntry[]): Promise<GroupRestSnapshotMessage>;\\n    onPhysicsGroupRest(group: string, callback: (snapshot: GroupRestSnapshotMessage) => void, scope?: FinalRestScope): void;\\n    readonly roomId: string;\\n    readonly sessionId: string;\\n    readonly roomType: string | null;\\n    readonly instanceKey: string | null;\\n    readonly effectiveUploadHz: number;\\n    readonly state: RoomState;\\n    onStateChange(cb: (state: RoomState) => void): () => void;\\n    onAdd(collection: 'players', cb: (player: PlayerState, id: string) => void): void;\\n    onAdd(collection: 'entities', cb: (entity: EntityState, id: string) => void): void;\\n    onRemove(collection: 'players', cb: (player: PlayerState, id: string) => void): void;\\n    onRemove(collection: 'entities', cb: (entity: EntityState, id: string) => void): void;\\n    onPlayerAvatarChanged(cb: (playerId: string, avatarUrl: string) => void): () => void;\\n    onMessage<Payload = unknown>(type: string, cb: (payload: Payload) => void): () => void;\\n    onTicket(cb: (ticket: RoomTicket) => void): () => void;\\n    onModuleFused(cb: (event: ModuleFusedMessage) => void): void;\\n    onModuleWake(cb: (event: ModuleWakeMessage) => void): void;\\n    onModuleSleep(cb: (event: ModuleSleepMessage) => void): void;\\n    onModuleEngagement(cb: (event: ModuleEngagementMessage) => void): () => void;\\n    onModuleState(cb: (snapshot: ModuleStateSnapshot) => void): void;\\n    onModuleEffect(cb: (effect: ModuleEffect) => void): void;\\n    onStateAck(cb: (ack: StateAckMessage) => void): void;\\n    onEntityStateAck(cb: (ack: EntityStateAckMessage) => void): void;\\n    sendState(input: ReplicaInput): void;\\n    sendAbility(ability: string, active: boolean): void;\\n    sendAction(name: string, args?: Record<string, RoomVarValue>, moduleId?: string): void;\\n    sendModuleAction(request: ModuleActionRequest): boolean;\\n    sendVehicleComponentAction(request: VehicleComponentActionRequest): boolean;\\n    sendVehicleDetachAction(request: VehicleDetachActionRequest): boolean;\\n    requestModuleEngagement(moduleId: string, action: string, args?: Record<string, RoomVarValue>): void;\\n    releaseModuleEngagement(moduleId: string, action: string, args?: Record<string, RoomVarValue>): boolean;\\n    moduleEngagement(moduleId: string): ModuleEngagementLease | null;\\n    sendGesture(clip: string, play: GesturePlay): void;\\n    sendAttachments(attachments: AttachmentEntry[]): void;\\n    sendAvatarRefresh(): void;\\n    sendEmoteRefresh(): void;\\n    requestDistributionCapability(ref: string): Promise<DistributionCapabilityGrant>;\\n    sendEmoteJoin(initiator: string): void;\\n    uploadEntity(entityId: string, input: {\\n        position: Vec3;\\n        velocity?: Vec3;\\n        angularVelocity?: Vec3;\\n        orientation?: Quat;\\n        vars?: Record<string, RoomVarValue>;\\n        epoch?: number;\\n    }, moduleId?: string): void;\\n    uploadEntities(entities: ReadonlyArray<{\\n        id: string;\\n        position: Vec3;\\n        velocity?: Vec3;\\n        angularVelocity?: Vec3;\\n        orientation?: Quat;\\n        vars?: Record<string, RoomVarValue>;\\n        epoch?: number;\\n    }>, moduleId?: string): void;\\n    pendingInputs(): readonly StateMessage[];\\n    acknowledge(seq: number): void;\\n    onDrop(cb: () => void): void;\\n    onReconnect(cb: () => void): void;\\n    onLeave(cb: (code: number, reason: HelixRoomLeaveReason) => void): void;\\n    leave(): Promise<void>;\\n    readonly vars: VarsView;\\n    readonly me: VarsView;\\n    player(id: string): VarsView;\\n    phase(): string;\\n    currentTurn(): string;\\n    isMyTurn(): boolean;\\n    module(moduleId: string): ModuleAccessors;\\n}\",\n            \"kind\": \"Interface"
    "Declaration\",\n            \"source\": \"src/multiplayer.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixRoom\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class HelixRoomJoinError extends Error {\\n    readonly code: HelixRoomJoinErrorCode;\\n    readonly status: number | null;\\n    constructor(code: HelixRoomJoinErrorCode, message: string, status: number | null = null, cause?: unknown) {\\n        super(message, cause === undefined ? undefined : { cause });\\n        this.name = 'HelixRoomJoinError';\\n        this.code = code;\\n        this.status = status;\\n        Object.setPrototypeOf(this, HelixRoomJoinError.prototype);\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/multiplayer.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"HelixRoomJoinError\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixRoomJoinErrorCode = 'unknown-room-type' | 'ticket-required' | 'ticket-invalid' | 'room-type-unavailable' | 'instance-closed' | 'rejoin-failed' | 'invalid-target' | 'not-ready' | 'switch-in-progress' | 'join-in-progress' | 'cancelled' | 'left' | 'join-failed';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixRoomJoinErrorCode\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixRoomLeaveReason = 'switch' | 'leave' | 'dropped';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixRoomLeaveReason\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixSession = {\\n    token: string;\\n    expiresAt: string;\\n    scopes: string[];\\n    trial?: HelixTrial;\\n    user: HelixUser;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixSession\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixUser = {\\n    id: string;\\n    username: string;\\n    displayName: string | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixUser\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface HelixVoiceAudioFeatures {\\n    rms: number;\\n    zeroCrossingRate: number;\\n    bands: readonly [number, number, number, number, number];\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/voice.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixVoiceAudioFeatures\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixVoiceDevice = {\\n    deviceId: string;\\n    label: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixVoiceDevice\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixVoiceMicMode = 'ptt' | 'open' | 'muted';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixVoiceMicMode\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixVoicePermission = 'prompt' | 'granted' | 'denied';\",\n            \"kind\": \"Ty"
    "peAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixVoicePermission\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixVoiceSettings = {\\n    micMode: HelixVoiceMicMode;\\n    micDeviceId?: string;\\n    micDeviceLabel?: string;\\n    mutedUserIds: string[];\\n    micVolume?: number;\\n    outputVolume?: number;\\n    micAutoSensitivity?: boolean;\\n    micSensitivity?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixVoiceSettings\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixVoiceState = {\\n    available: boolean;\\n    connected: boolean;\\n    micMode: HelixVoiceMicMode;\\n    pttKey?: string;\\n    transmitting: boolean;\\n    permission: HelixVoicePermission;\\n    activeDeviceId?: string;\\n    devices: HelixVoiceDevice[];\\n    speakingUserIds: string[];\\n    channelId?: string;\\n    audioBlocked?: boolean;\\n    error?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixVoiceState\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixVoiceVec3 = {\\n    x: number;\\n    y: number;\\n    z: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/voice.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixVoiceVec3\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type HelixWorldContext = {\\n    id: string;\\n    slug: string;\\n    title: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"HelixWorldContext\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const IK_LIMITS = {\\n    maxReachDistanceM: 3,\\n    maxLookDistanceM: 50,\\n} as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"IK_LIMITS\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface InputLeaseHandle {\\n    readonly epoch: number;\\n    readonly enforced: boolean;\\n    release(): void;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"InputLeaseHandle\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface InputLeaseRequest {\\n    readonly ownerToken: object;\\n    readonly actions: readonly StandardModeAction[];\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"InputLeaseRequest\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type InputMap = Record<string, VerbBinding>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"InputMap\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface InteractionMode<R = unknown> {\\n    readonly id: string;\\n    readonly suppress: Suppression;\\n    readonly camera?: CameraIntent;\\n    readonly input?: InputMap;\\n    readonly updateWhileCovered?: boole"
    "an;\\n    enter(ctx: ModeContext<R>): void | Promise<void>;\\n    exit(ctx: ModeContext<R>): void | Promise<void>;\\n    update?(dtSeconds: number, ctx: ModeContext<R>): void;\\n    onCovered?(ctx: ModeContext<R>): void;\\n    onRevealed?(ctx: ModeContext<R>): void;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"InteractionMode\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function intersectCameraCapability(runtime: HelixCameraCapability, shell: HelixCameraCapability): HelixCameraCapability {\\n    const runtimeRefuses = CAMERA_CAPABILITY_FLAGS.some((flag) => !runtime[flag]);\\n    const shellRefuses = CAMERA_CAPABILITY_FLAGS.some((flag) => runtime[flag] && !shell[flag]);\\n    const reason = runtimeRefuses\\n        ? runtime.unavailableReason ?? (shellRefuses ? shell.unavailableReason : undefined)\\n        : shellRefuses\\n            ? shell.unavailableReason\\n            : undefined;\\n    return {\\n        photo: runtime.photo && shell.photo,\\n        video: runtime.video && shell.video,\\n        drone: runtime.drone && shell.drone,\\n        twoHandPose: runtime.twoHandPose && shell.twoHandPose,\\n        focusPoint: runtime.focusPoint && shell.focusPoint,\\n        exposureBias: runtime.exposureBias && shell.exposureBias,\\n        worldAudio: runtime.worldAudio && shell.worldAudio,\\n        ...(reason !== undefined ? { unavailableReason: reason } : {}),\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"intersectCameraCapability\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type InventoryItem = {\\n    id?: string;\\n    itemId: string;\\n    title: string;\\n    kind?: string;\\n    category?: string;\\n    subCategory?: string | null;\\n    quantity: number;\\n    description?: string | null;\\n    thumbnailUrl?: string | null;\\n    equipped?: boolean;\\n    avatarSlot?: string | null;\\n    socket?: string | null;\\n    metadata?: Record<string, unknown>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"InventoryItem\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const isCameraControlTarget = (v: unknown): v is CameraControlTarget => isMember(CAMERA_CONTROL_TARGETS, v);\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"isCameraControlTarget\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const isCameraDroneLockMode = (v: unknown): v is CameraDroneLockMode => isMember(CAMERA_DRONE_LOCK_MODES, v);\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"isCameraDroneLockMode\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const isCameraFilterId = (v: unknown): v is CameraFilterId => isMember(CAMERA_FILTER_IDS, v);\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"isCameraFilterId\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const isCameraMediaMode = (v: unknown): v is CameraMediaMode => isMember(CAMERA_MEDIA_MODES, v);\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"isCameraMediaMode\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declaratio"
    "ns\": [\n          {\n            \"declaration\": \"const isCameraSessionState = (v: unknown): v is CameraSessionState => isMember(CAMERA_SESSION_STATES, v);\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"isCameraSessionState\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const isCameraSpatialMode = (v: unknown): v is CameraSpatialMode => isMember(CAMERA_SPATIAL_MODES, v);\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"isCameraSpatialMode\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const isCameraTimerSeconds = (v: unknown): v is CameraTimerSeconds => isMember(CAMERA_TIMER_SECONDS, v);\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"isCameraTimerSeconds\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function isFinalRestBatch(m: EntityStateBatchMessage): boolean {\\n    if (!isFinalRestClaim(m.finalRest) || !finalRestId(m.finalRest.transactionId) ||\\n        m.moduleId !== m.finalRest.scope?.moduleId || !finalRestSequence(m.seq) || !Number.isFinite(m.tMs) ||\\n        !Array.isArray(m.states) || m.states.length === 0)\\n        return false;\\n    return m.states.every(s => finalRestId(s.e) && Number.isSafeInteger(s.ep) && (s.ep as number) >= 0 &&\\n        s.transactionId === m.finalRest!.transactionId &&\\n        [s.p, s.lv, s.av].every(v => Array.isArray(v) && v.length === 3 && v.every(Number.isFinite)) &&\\n        s.lv!.every(v => v === 0) && s.av!.every(v => v === 0) &&\\n        Array.isArray(s.q) && s.q.length === 4 && s.q.every(Number.isFinite) && Math.hypot(...s.q) > 1e-6 &&\\n        s.v === undefined);\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"isFinalRestBatch\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function isFinalRestClaim(v: unknown): v is {\\n    version: 1;\\n    requestId: number;\\n    group: string;\\n    scope?: FinalRestProvenance;\\n} {\\n    if (!v || typeof v !== 'object')\\n        return false;\\n    const m = v as Record<string, unknown>;\\n    return m.version === 1 && finalRestSequence(m.requestId) && finalRestId(m.group) && validFinalRestScope(m.scope);\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"isFinalRestClaim\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ItemEditionMode = 'standard' | 'collectible';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ItemEditionMode\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface JoinRoomOptions {\\n    apiBaseUrl?: string;\\n    uploadHz?: number;\\n    reservationPath?: string;\\n    roomType?: string;\\n    ticket?: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"JoinRoomOptions\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface JoinVoiceOptions {\\n    roomId?: string;\\n    apiBaseUrl?: string;\\n    tokenPath?: string;\\n    pttKey?: string;\\n    channel?: string;\\n}\",\n            \"kind\": \""
    "InterfaceDeclaration\",\n            \"source\": \"src/voice.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"JoinVoiceOptions\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type LeaderboardEntry = {\\n    subject: string;\\n    displayName: string;\\n    score: number;\\n    source: string;\\n    updatedAt: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"LeaderboardEntry\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type LeaderboardOrder = 'desc' | 'asc';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"LeaderboardOrder\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type LeaderboardPage = {\\n    entries: LeaderboardEntry[];\\n    truncated: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"LeaderboardPage\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type LeaderboardSubmitOptions = {\\n    order?: LeaderboardOrder;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"LeaderboardSubmitOptions\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type LeaderboardSubmitResult = {\\n    best: number | null;\\n    updated: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"LeaderboardSubmitResult\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type LeaderboardTopOptions = {\\n    limit?: number;\\n    order?: LeaderboardOrder;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"LeaderboardTopOptions\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ListenAdmissionResult = {\\n    admitted: boolean;\\n    seatId?: string;\\n    joinerUserId?: string;\\n    reason?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/index.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ListenAdmissionResult\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ListenCloseResult = {\\n    closed: boolean;\\n    releasedSeatIds: string[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/index.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ListenCloseResult\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ListenHeartbeatResult = {\\n    status: 'open' | 'closed';\\n    expiresAt: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/index.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ListenHeartbeatResult\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ListenReleaseResult = {\\n    released: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/index.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ListenReleaseResult\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"decl"
    "arations\": [\n          {\n            \"declaration\": \"export type MarketplaceListing = {\\n    listingId?: string;\\n    itemId: string;\\n    title: string;\\n    description?: string | null;\\n    priceLix: number;\\n    isFree: boolean;\\n    thumbnailUrl?: string | null;\\n    kind?: string;\\n    category?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"MarketplaceListing\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type MarketplaceQuery = {\\n    kind?: string;\\n    category?: string;\\n    search?: string;\\n    limit?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"MarketplaceQuery\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type MatchFound = {\\n    ticketId: string;\\n    instanceId: string;\\n    roomType: string;\\n    expiresAt: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"MatchFound\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const MAX_MESSAGE_BYTES = 12288;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"MAX_MESSAGE_BYTES\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const MESSAGE_RATE = {\\n    stateHz: 10,\\n    abilityHz: 20,\\n    actionHz: 20,\\n    gestureHz: 5,\\n    attachmentsHz: 4,\\n    purchaseReceiptHz: 2,\\n    avatarRefreshHz: 1,\\n    emoteRefreshHz: 1,\\n    emoteJoinHz: 2,\\n    entityStateHz: 10,\\n    pingHz: 4,\\n    maxUploadHz: 20,\\n} as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"MESSAGE_RATE\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ModeCapability = 'locomotion' | 'cameraControl' | 'defaultHud' | 'interaction';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModeCapability\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModeContext<R = unknown> {\\n    readonly params: Record<string, unknown>;\\n    readonly live: boolean;\\n    readonly covered: boolean;\\n    readonly aborted: boolean;\\n    setCamera(intent: CameraIntent | null): void;\\n    setInput(input: InputMap | null): void;\\n    onVerb(verb: string | typeof ANY_VERB, handler: VerbHandler): () => void;\\n    isVerbActive(verb: string): boolean;\\n    emit(event: string, payload?: unknown): void;\\n    release(result?: R): void;\\n    diag(patch: Record<string, unknown>): void;\\n    clearDiag(...keys: string[]): void;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModeContext\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ModeEndReason = 'released' | 'popped' | 'cleared' | 'error';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModeEndReason\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModeHost {\\n    setSuppression(eff"
    "ective: Required<Suppression>): void;\\n    applyCamera(intent: CameraIntent | null): void;\\n    setVerbs(input: InputMap | null, dispatch: VerbSink | null): void;\\n    reportDiag(modeId: string, patch: Record<string, unknown>): void;\\n    onModeEvent?(modeId: string, event: string, payload: unknown): void;\\n    onError?(error: unknown, modeId: string, phase: ModePhase): void;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModeHost\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ModePhase = 'enter' | 'exit' | 'update' | 'verb' | 'covered' | 'revealed';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModePhase\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModeResult<R = unknown> {\\n    value?: R;\\n    reason: ModeEndReason;\\n    aborted: boolean;\\n    error?: unknown;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModeResult\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class ModeStack {\\n    readonly #host: ModeHost;\\n    readonly #frames: Frame[] = [];\\n    readonly #sink: VerbSink = (verb, event) => this.dispatchVerb(verb, event);\\n    #disposed = false;\\n    #clearPromise: Promise<void> | null = null;\\n    constructor(host: ModeHost) {\\n        this.#host = host;\\n    }\\n    get active(): InteractionMode | null {\\n        return this.#frames.at(-1)?.mode ?? null;\\n    }\\n    get depth(): number {\\n        return this.#frames.length;\\n    }\\n    get busy(): boolean {\\n        return this.#frames.some((frame) => frame.leaving);\\n    }\\n    has(id: string): boolean {\\n        return this.#frames.some((frame) => frame.mode.id === id);\\n    }\\n    async push<R = unknown>(mode: InteractionMode<R>, params: Record<string, unknown> = {}, options: PushOptions<R> = {}): Promise<PushOutcome<R>> {\\n        if (this.#disposed)\\n            return rejected<R>(new Error('mode stack is disposed'));\\n        if (this.#clearPromise)\\n            return rejected<R>(new Error('mode stack is clearing'));\\n        if (this.has(mode.id))\\n            return this.#reject<R>(new Error(`mode '${mode.id}' is already on the stack`), mode.id);\\n        const owner = OWNERS.get(mode as unknown as InteractionMode<never>);\\n        if (owner && owner !== this) {\\n            return this.#reject<R>(new Error(`mode '${mode.id}' is already live on another stack`), mode.id);\\n        }\\n        const clash = this.#exclusiveClash(mode as InteractionMode<unknown>);\\n        if (clash) {\\n            return this.#reject<R>(new Error(`mode '${mode.id}' claims '${clash.cap}' already held by '${clash.byId}'`), mode.id);\\n        }\\n        if (mode.input) {\\n            const errors = validateInputMap(mode.input, mode.suppress);\\n            if (errors.length) {\\n                return this.#reject<R>(new Error(`mode '${mode.id}' has an invalid input map: ${errors.join('; ')}`), mode.id);\\n            }\\n        }\\n        else if (mode.suppress.locomotion || mode.suppress.cameraControl) {\\n            return this.#reject<R>(new Error(`mode '${mode.id}' suppresses locomotion or cameraControl without a cancel action`), mode.id);\\n        }\\n        const frame = this.#makeFrame(mode as InteractionMode<unknown>, params, options as PushOptions<unknown>);\\n        OWNERS.set(mode as unknown as InteractionMode<never>, this);\\n        const below = this.#frames.at(-1);\\n        this.#frames.push(frame);\\n        if (below)\\n            this.#cover(below);\\n        this.#applySuppression();\\n        this.#applyTop();\\n        try {\\n            await mode.ent"
    "er(frame.ctx as ModeContext<R>);\\n            if (frame.settled) {\\n                await frame.done;\\n                return { ok: false, error: new Error(`mode '${mode.id}' left while entering`), done: frame.done as Promise<ModeResult<R>> };\\n            }\\n            frame.entered = true;\\n            this.#applyTop();\\n            return { ok: true, done: frame.done as Promise<ModeResult<R>> };\\n        }\\n        catch (error) {\\n            this.#fail(error, mode.id, 'enter');\\n            await this.#popFrame(frame, true, 'error', error);\\n            return { ok: false, error, done: frame.done as Promise<ModeResult<R>> };\\n        }\\n    }\\n    async pop(id?: string, aborted = false): Promise<boolean> {\\n        const frame = id === undefined\\n            ? this.#frames.at(-1)\\n            : [...this.#frames].reverse().find((candidate) => candidate.mode.id === id);\\n        if (!frame)\\n            return false;\\n        return this.#popFrame(frame, aborted, aborted ? 'cleared' : 'popped');\\n    }\\n    clear(aborted = true): Promise<void> {\\n        if (this.#clearPromise)\\n            return this.#clearPromise;\\n        this.#clearPromise = this.#clearFrames(aborted).finally(() => {\\n            this.#clearPromise = null;\\n        });\\n        return this.#clearPromise;\\n    }\\n    update(dtSeconds: number): void {\\n        if (this.#disposed)\\n            return;\\n        const top = this.#frames.at(-1);\\n        for (const frame of [...this.#frames]) {\\n            if (frame.leaving || !frame.entered || !frame.mode.update)\\n                continue;\\n            if (frame !== top && !frame.mode.updateWhileCovered)\\n                continue;\\n            try {\\n                frame.mode.update(dtSeconds, frame.ctx);\\n            }\\n            catch (error) {\\n                this.#failAndPop(frame, error, 'update');\\n            }\\n        }\\n    }\\n    dispatchVerb(verb: string, event: VerbEvent): boolean {\\n        if (this.#disposed)\\n            return false;\\n        const frame = this.#frames.at(-1);\\n        if (!frame || frame.leaving || !frame.entered)\\n            return false;\\n        const binding = frame.input?.[verb];\\n        if (!binding) {\\n            this.#fail(new Error(`mode '${frame.mode.id}' received undeclared verb '${verb}'`), frame.mode.id, 'verb');\\n            return false;\\n        }\\n        if (binding.disabled)\\n            return false;\\n        if (event.phase === 'start')\\n            frame.activeVerbs.add(verb);\\n        if (event.phase === 'end')\\n            frame.activeVerbs.delete(verb);\\n        this.#invoke(frame, verb, event);\\n        return true;\\n    }\\n    async dispose(): Promise<void> {\\n        if (this.#disposed)\\n            return this.#clearPromise ?? Promise.resolve();\\n        this.#disposed = true;\\n        await this.clear(true);\\n    }\\n    async #clearFrames(aborted: boolean): Promise<void> {\\n        for (const frame of this.#frames)\\n            frame.leaving = true;\\n        this.#applyTop();\\n        while (this.#frames.length) {\\n            const frame = this.#frames.at(-1)!;\\n            if (frame.settled) {\\n                await frame.done;\\n            }\\n            else {\\n                await this.#popFrame(frame, aborted, 'cleared');\\n            }\\n        }\\n    }\\n    #reject<R>(error: unknown, modeId: string): PushOutcome<R> {\\n        this.#fail(error, modeId, 'enter');\\n        return rejected<R>(error);\\n    }\\n    #exclusiveClash(mode: InteractionMode<unknown>): {\\n        cap: ModeCapability;\\n        byId: string;\\n    } | null {\\n        for (const cap of EXCLUSIVE) {\\n            if (!mode.suppress[cap])\\n                continue;\\n            const holder = this.#frames.find((frame) => frame.mode.suppress[cap]);\\n            if (holder)\\n                return { cap, byId: holder.mode.id };\\n        }\\n        return null;\\n    }\\n    #applySuppression(): void {\\n        const effective: Required<Suppression> = {\\n            locomotion: false,\\n            cameraControl: false,\\n            defaultHud: false,\\n         "
    "   interaction: false,\\n        };\\n        for (const frame of this.#frames) {\\n            for (const capability of Object.keys(effective) as ModeCapability[]) {\\n                if (frame.mode.suppress[capability])\\n                    effective[capability] = true;\\n            }\\n        }\\n        this.#host.setSuppression(effective);\\n    }\\n    #applyTop(): void {\\n        const top = this.#frames.at(-1);\\n        const usable = top?.entered && !top.leaving ? top : null;\\n        if (!top || usable)\\n            this.#host.applyCamera(usable?.camera ?? null);\\n        this.#host.setVerbs(usable?.input ?? null, usable?.input ? this.#sink : null);\\n    }\\n    #cover(frame: Frame): void {\\n        if (frame.covered)\\n            return;\\n        frame.covered = true;\\n        this.#endHeldVerbs(frame);\\n        if (!frame.mode.onCovered)\\n            return;\\n        try {\\n            frame.mode.onCovered(frame.ctx);\\n        }\\n        catch (error) {\\n            this.#failAndPop(frame, error, 'covered');\\n        }\\n    }\\n    #reveal(frame: Frame): void {\\n        if (!frame.covered)\\n            return;\\n        frame.covered = false;\\n        if (!frame.mode.onRevealed)\\n            return;\\n        try {\\n            frame.mode.onRevealed(frame.ctx);\\n        }\\n        catch (error) {\\n            this.#failAndPop(frame, error, 'revealed');\\n        }\\n    }\\n    #endHeldVerbs(frame: Frame): void {\\n        const held = [...frame.activeVerbs];\\n        frame.activeVerbs.clear();\\n        for (const verb of held) {\\n            this.#invoke(frame, verb, { phase: 'end', value: 0, source: 'script' });\\n        }\\n    }\\n    #invoke(frame: Frame, verb: string, event: VerbEvent): void {\\n        const targets = [frame.handlers.get(verb), frame.handlers.get(ANY_VERB)];\\n        for (const handlers of targets) {\\n            if (!handlers)\\n                continue;\\n            for (const handler of [...handlers]) {\\n                try {\\n                    handler(event, verb);\\n                }\\n                catch (error) {\\n                    handlers.delete(handler);\\n                    this.#failAndPop(frame, error, 'verb');\\n                    return;\\n                }\\n            }\\n        }\\n    }\\n    #failAndPop(frame: Frame, error: unknown, phase: ModePhase): void {\\n        if (frame.leaving || frame.settled)\\n            return;\\n        this.#fail(error, frame.mode.id, phase);\\n        void this.#popFrame(frame, true, 'error', error);\\n    }\\n    async #popFrame(frame: Frame, aborted: boolean, reason: ModeEndReason, error?: unknown): Promise<boolean> {\\n        if (!this.#frames.includes(frame) || frame.settled)\\n            return false;\\n        frame.settled = true;\\n        frame.leaving = true;\\n        frame.aborted = aborted;\\n        this.#endHeldVerbs(frame);\\n        this.#applyTop();\\n        let endReason = reason;\\n        let failure = error;\\n        try {\\n            await frame.mode.exit(frame.ctx);\\n        }\\n        catch (exitError) {\\n            this.#fail(exitError, frame.mode.id, 'exit');\\n            if (failure === undefined)\\n                failure = exitError;\\n            endReason = 'error';\\n        }\\n        const at = this.#frames.indexOf(frame);\\n        if (at >= 0)\\n            this.#frames.splice(at, 1);\\n        OWNERS.delete(frame.mode as unknown as InteractionMode<never>);\\n        frame.handlers.clear();\\n        frame.activeVerbs.clear();\\n        this.#host.reportDiag(frame.mode.id, { active: false });\\n        this.#applySuppression();\\n        this.#applyTop();\\n        const next = this.#frames.at(-1);\\n        if (next && !next.leaving)\\n            this.#reveal(next);\\n        const result: ModeResult<unknown> = {\\n            reason: endReason,\\n            aborted,\\n            ...(frame.result ? { value: frame.result.value } : {}),\\n            ...(failure !== undefined ? { error: failure } : {}),\\n        };\\n        frame.settle(result);\\n        try {\\n            frame.options.onResult?.(result);\\n        }\\n        catch (callbac"
    "kError) {\\n            this.#fail(callbackError, frame.mode.id, 'exit');\\n        }\\n        return true;\\n    }\\n    #makeFrame(mode: InteractionMode<unknown>, params: Record<string, unknown>, options: PushOptions<unknown>): Frame {\\n        let settle: (result: ModeResult<unknown>) => void = () => undefined;\\n        const done = new Promise<ModeResult<unknown>>((resolve) => {\\n            settle = resolve;\\n        });\\n        const frame: Frame = {\\n            mode,\\n            params,\\n            diagState: {},\\n            camera: mode.camera ?? null,\\n            input: mode.input ?? null,\\n            handlers: new Map(),\\n            activeVerbs: new Set(),\\n            entered: false,\\n            leaving: false,\\n            settled: false,\\n            aborted: false,\\n            covered: false,\\n            result: null,\\n            options,\\n            settle,\\n            done,\\n            ctx: null as unknown as ModeContext<unknown>,\\n        };\\n        frame.ctx = this.#makeContext(frame);\\n        return frame;\\n    }\\n    #makeContext(frame: Frame): ModeContext<unknown> {\\n        const stack = this;\\n        return {\\n            params: frame.params,\\n            get live() {\\n                return stack.#frames.includes(frame);\\n            },\\n            get covered() {\\n                return frame.covered;\\n            },\\n            get aborted() {\\n                return frame.aborted;\\n            },\\n            setCamera(intent: CameraIntent | null): void {\\n                frame.camera = intent;\\n                if (stack.#frames.at(-1) === frame && frame.entered && !frame.leaving) {\\n                    stack.#host.applyCamera(frame.camera);\\n                }\\n            },\\n            setInput(input: InputMap | null): void {\\n                if (input) {\\n                    const errors = validateInputMap(input, frame.mode.suppress);\\n                    if (errors.length) {\\n                        const error = new Error(`setInput rejected for '${frame.mode.id}': ${errors.join('; ')}`);\\n                        stack.#failAndPop(frame, error, 'verb');\\n                        return;\\n                    }\\n                }\\n                else if (frame.mode.suppress.locomotion || frame.mode.suppress.cameraControl) {\\n                    const error = new Error(`setInput rejected for '${frame.mode.id}': exclusive suppression requires cancel`);\\n                    stack.#failAndPop(frame, error, 'verb');\\n                    return;\\n                }\\n                for (const verb of [...frame.activeVerbs]) {\\n                    if (!input?.[verb]) {\\n                        frame.activeVerbs.delete(verb);\\n                        stack.#invoke(frame, verb, { phase: 'end', value: 0, source: 'script' });\\n                    }\\n                }\\n                frame.input = input;\\n                if (stack.#frames.at(-1) === frame && frame.entered && !frame.leaving) {\\n                    stack.#host.setVerbs(frame.input, frame.input ? stack.#sink : null);\\n                }\\n            },\\n            onVerb(verb: string, handler: VerbHandler): () => void {\\n                const handlers = frame.handlers.get(verb) ?? new Set<VerbHandler>();\\n                frame.handlers.set(verb, handlers);\\n                handlers.add(handler);\\n                return () => handlers.delete(handler);\\n            },\\n            isVerbActive(verb: string): boolean {\\n                return frame.activeVerbs.has(verb);\\n            },\\n            emit(event: string, payload?: unknown): void {\\n                try {\\n                    frame.options.onEvent?.(event, payload);\\n                    stack.#host.onModeEvent?.(frame.mode.id, event, payload);\\n                }\\n                catch (callbackError) {\\n                    stack.#failAndPop(frame, callbackError, 'update');\\n                }\\n            },\\n            release(value?: unknown): void {\\n                frame.result = { value };\\n                if (!stack.#frames.includes(frame) || frame.leaving)"
    "\\n                    return;\\n                void stack.#popFrame(frame, false, 'released');\\n            },\\n            diag(patch: Record<string, unknown>): void {\\n                for (const [key, value] of Object.entries(patch)) {\\n                    if (value === undefined)\\n                        delete frame.diagState[key];\\n                    else\\n                        frame.diagState[key] = value;\\n                }\\n                stack.#host.reportDiag(frame.mode.id, {\\n                    active: stack.#frames.includes(frame),\\n                    ...frame.diagState,\\n                });\\n            },\\n            clearDiag(...keys: string[]): void {\\n                if (keys.length) {\\n                    for (const key of keys)\\n                        delete frame.diagState[key];\\n                }\\n                else {\\n                    for (const key of Object.keys(frame.diagState))\\n                        delete frame.diagState[key];\\n                }\\n                stack.#host.reportDiag(frame.mode.id, {\\n                    active: stack.#frames.includes(frame),\\n                    ...frame.diagState,\\n                });\\n            },\\n        };\\n    }\\n    #fail(error: unknown, modeId: string, phase: ModePhase): void {\\n        this.#host.onError?.(error, modeId, phase);\\n        this.#host.reportDiag(modeId, { error: String(error), phase });\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"ModeStack\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const MODULE_FINAL_REST_SNAPSHOT = '__helix:moduleFinalRestSnapshot';\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"MODULE_FINAL_REST_SNAPSHOT\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleAccessors {\\n    readonly moduleId: string;\\n    vars: VarsView;\\n    me: VarsView;\\n    player(id: string): VarsView;\\n    entity(id: string): VarsView;\\n    phase(): string;\\n    timerDeadline(name: string, key?: string): number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-accessors.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleAccessors\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleActionRequest {\\n    identity: ModuleIdentity;\\n    action: string;\\n    args?: Record<string, string | number | boolean>;\\n    engagement?: 'acquire' | 'release';\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleActionRequest\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleEffect {\\n    moduleId: string;\\n    commandId: string;\\n    index: number;\\n    serverTick: number;\\n    event: string;\\n    payload: Readonly<Record<string, unknown>>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleEffect\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleEffectMessage {\\n    moduleId: string;\\n    commandId: string;\\n    index: number;\\n    serverTick: number;\\n    event: string;\\n    payload: Record<string, RoomVarValue>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleEffectMessage\"\n      },\n    "
    "  {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleEngagementMessage {\\n    moduleId: string;\\n    action: string;\\n    status: ModuleEngagementStatus;\\n    requestId?: number;\\n    epoch?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleEngagementMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ModuleEngagementStatus = 'granted' | 'denied' | 'released' | 'revoked';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleEngagementStatus\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleFusedMessage {\\n    moduleId: string;\\n    serverTick: number;\\n    tickNodes: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleFusedMessage\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleIdentity {\\n    itemInstanceId?: string;\\n    moduleId: string;\\n    bundleChecksumSha256: string;\\n    revision: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleIdentity\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleSleepMessage {\\n    moduleId: string;\\n    serverTick: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleSleepMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleState {\\n    roomVars: RoomVars;\\n    players: Record<string, {\\n        vars: RoomVars;\\n    }>;\\n    entities: Record<string, EntityState>;\\n    phase: string;\\n    phaseStartTick: number;\\n    timerDeadlines: Record<string, number>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/room.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleState\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleStateSnapshot {\\n    moduleId: string;\\n    revision: number;\\n    phase: string;\\n    serverTick: number;\\n    roomVars: Readonly<Record<string, unknown>>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleStateSnapshot\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ModuleWakeMessage {\\n    moduleId: string;\\n    reason: ModuleWakeReason;\\n    serverTick: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ModuleWakeMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ModuleWakeReason = 'always-on' | 'proximity' | 'engagement' | 'action' | 'import' | 'module' | 'external';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\","
    "\n        \"name\": \"ModuleWakeReason\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const MOVEMENT_GATE = {\\n    toleranceMul: 1.25,\\n    ownerEntityToleranceMul: 3.0,\\n    maxCatchupMs: 300,\\n    impulseMul: 6,\\n    graceMs: 250,\\n} as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"MOVEMENT_GATE\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function nearestLensPreset(zoom: number): CameraLensPreset {\\n    const clamped = clampCameraZoom(zoom);\\n    let best: CameraLensPreset = CAMERA_LENS_PRESETS[0];\\n    let bestDistance = Number.POSITIVE_INFINITY;\\n    for (const preset of CAMERA_LENS_PRESETS) {\\n        const distance = Math.abs(preset - clamped);\\n        if (distance < bestDistance) {\\n            best = preset;\\n            bestDistance = distance;\\n        }\\n    }\\n    return best;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"nearestLensPreset\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function normaliseTouch(touch: TouchPresentation): TouchPresentation {\\n    return touch;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"normaliseTouch\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function normalizeCameraCapability(raw: unknown): HelixCameraCapability | null {\\n    if (!isRecord(raw))\\n        return null;\\n    const flags = [\\n        'photo',\\n        'video',\\n        'drone',\\n        'twoHandPose',\\n        'focusPoint',\\n        'exposureBias',\\n        'worldAudio',\\n    ] as const;\\n    for (const flag of flags)\\n        if (typeof raw[flag] !== 'boolean')\\n            return null;\\n    if (raw.unavailableReason !== undefined && typeof raw.unavailableReason !== 'string') {\\n        return null;\\n    }\\n    return {\\n        photo: raw.photo as boolean,\\n        video: raw.video as boolean,\\n        drone: raw.drone as boolean,\\n        twoHandPose: raw.twoHandPose as boolean,\\n        focusPoint: raw.focusPoint as boolean,\\n        exposureBias: raw.exposureBias as boolean,\\n        worldAudio: raw.worldAudio as boolean,\\n        ...(raw.unavailableReason !== undefined\\n            ? { unavailableReason: raw.unavailableReason as string }\\n            : {}),\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"normalizeCameraCapability\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function normalizeCameraState(raw: unknown): HelixCameraState | null {\\n    if (!isRecord(raw))\\n        return null;\\n    if (!isCameraSessionState(raw.session) ||\\n        !isCameraMediaMode(raw.media) ||\\n        !isCameraSpatialMode(raw.spatial) ||\\n        !isCameraControlTarget(raw.controlTarget) ||\\n        !isCameraFilterId(raw.filter) ||\\n        !isCameraTimerSeconds(raw.timerSeconds)) {\\n        return null;\\n    }\\n    if (!finite(raw.zoom) || raw.zoom < CAMERA_MIN_ZOOM || raw.zoom > CAMERA_MAX_ZOOM)\\n        return null;\\n    const aim = normalizeAim(raw.aim);\\n    const shutter = normalizeShutter(raw.shutter);\\n    const capability = normalizeCameraCapability(raw.capability);\\n    if (!aim || !shutter || !capability)\\n        return null;\\n    let focusPoint: CameraFocusPoint | undefined;\\n    if (raw.focusPoint !== undefined) {\\n        const parsed = normalizeFocusPoint(raw.focusPoint);\\n        if (!parsed)\\n            return null;\\n   "
    "     focusPoint = parsed;\\n    }\\n    if (raw.exposureBias !== undefined && !finite(raw.exposureBias))\\n        return null;\\n    let drone: HelixCameraDroneState | undefined;\\n    if (raw.drone !== undefined) {\\n        const parsed = normalizeDroneState(raw.drone);\\n        if (!parsed)\\n            return null;\\n        drone = parsed;\\n    }\\n    if (raw.session === 'drone' && !drone)\\n        return null;\\n    return {\\n        session: raw.session,\\n        media: raw.media,\\n        spatial: raw.spatial,\\n        controlTarget: raw.controlTarget,\\n        lens: nearestLensPreset(raw.zoom),\\n        zoom: raw.zoom,\\n        filter: raw.filter,\\n        timerSeconds: raw.timerSeconds,\\n        aim,\\n        shutter,\\n        capability,\\n        ...(focusPoint ? { focusPoint } : {}),\\n        ...(raw.exposureBias !== undefined ? { exposureBias: raw.exposureBias } : {}),\\n        ...(drone ? { drone } : {}),\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"normalizeCameraState\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function normalizeDeviceTrialSpawn(session: HelixSession | null, now: () => number = Date.now): DeviceTrialSpawn | null {\\n    const trial = session?.trial;\\n    const raw: unknown = trial?.spawnedItem;\\n    if (trial?.kind !== 'device' ||\\n        !record(raw) ||\\n        !UUID.test(trial.id) ||\\n        !UUID.test(trial.itemId) ||\\n        !Number.isSafeInteger(trial.expiresAt) ||\\n        now() >= trial.expiresAt * 1000 ||\\n        [...FORBIDDEN_FIELDS].some((field) => field in raw) ||\\n        raw.kind !== 'device' ||\\n        raw.placementId !== trial.id ||\\n        raw.itemId !== trial.itemId ||\\n        raw.expiresAt !== trial.expiresAt ||\\n        typeof raw.name !== 'string' ||\\n        raw.name.length === 0 ||\\n        raw.name.length > 256 ||\\n        !servableAssetUrl(raw.modelUrl) ||\\n        !validTransform(raw.transform) ||\\n        !record(raw.deviceDefinition) ||\\n        typeof raw.deviceDefinition.id !== 'string' ||\\n        raw.deviceDefinition.id.length === 0 ||\\n        typeof raw.deviceDefinition.version !== 'string' ||\\n        raw.deviceDefinition.version.length === 0 ||\\n        !record(raw.functionalPin) ||\\n        typeof raw.functionalPin.continuumPackageId !== 'string' ||\\n        !UUID.test(raw.functionalPin.continuumPackageId) ||\\n        typeof raw.functionalPin.continuumPackageVersion !== 'string' ||\\n        raw.functionalPin.continuumPackageVersion.length === 0 ||\\n        raw.functionalPin.continuumPackageVersion.length > 64 ||\\n        typeof raw.functionalPin.continuumManifestCid !== 'string' ||\\n        !CONTINUUM_CID.test(raw.functionalPin.continuumManifestCid) ||\\n        !record(raw.composition)) {\\n        return null;\\n    }\\n    const projection = normalizeSealedDeviceDefinitionProjection({\\n        definition: raw.definition,\\n        definitionChecksumSha256: raw.definitionChecksumSha256,\\n        expiresAtEpochSeconds: trial.expiresAt,\\n        pin: {\\n            packageId: raw.functionalPin.continuumPackageId,\\n            version: raw.functionalPin.continuumPackageVersion,\\n            manifestCid: raw.functionalPin.continuumManifestCid,\\n        },\\n    });\\n    if (projection === null ||\\n        projection.definition.id !== raw.deviceDefinition.id ||\\n        projection.definition.version !== raw.deviceDefinition.version) {\\n        return null;\\n    }\\n    try {\\n        const transform = raw.transform as {\\n            position: [\\n                number,\\n                number,\\n                number\\n            ];\\n            yawDeg: number;\\n            scale: number;\\n        };\\n        return deepFreeze({\\n            placementId: trial.id,\\n            itemId: trial.itemId,\\n            kind: 'device',\\n            name: raw.name,\\n            modelUrl: raw.modelUrl as string | null,\\n            transform: {\\n                position: "
    "[...transform.position] as [\\n                    number,\\n                    number,\\n                    number\\n                ],\\n                yawDeg: transform.yawDeg,\\n                scale: transform.scale,\\n            },\\n            expiresAt: trial.expiresAt,\\n            deviceDefinition: {\\n                id: projection.definition.id,\\n                version: projection.definition.version,\\n            },\\n            definition: projection.definition,\\n            definitionChecksumSha256: projection.definitionChecksumSha256,\\n            functionalPin: {\\n                continuumPackageId: projection.pin.packageId,\\n                continuumPackageVersion: projection.pin.version,\\n                continuumManifestCid: projection.pin.manifestCid,\\n            },\\n            composition: jsonSnapshot(raw.composition),\\n        });\\n    }\\n    catch {\\n        return null;\\n    }\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/device-trial.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"normalizeDeviceTrialSpawn\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function normalizeRuntimeFidelityIntent(value: unknown): RuntimeFidelityIntent | null {\\n    if (!value || typeof value !== 'object')\\n        return null;\\n    const candidate = value as Record<string, unknown>;\\n    if (Object.keys(candidate).length !== 4 ||\\n        candidate.version !== RUNTIME_FIDELITY_VERSION ||\\n        !RUNTIME_FIDELITY_VISUAL_TIERS.includes(candidate.requestedVisualTier as RuntimeFidelityVisualTier) ||\\n        !(candidate.renderScaleOverride === null ||\\n            RUNTIME_FIDELITY_RENDER_SCALES.includes(candidate.renderScaleOverride as RuntimeFidelityRenderScale)) ||\\n        !(candidate.runtimeProfileQuality === null ||\\n            RUNTIME_PROFILE_QUALITIES.includes(candidate.runtimeProfileQuality as RuntimeProfileQuality))) {\\n        return null;\\n    }\\n    return {\\n        version: RUNTIME_FIDELITY_VERSION,\\n        requestedVisualTier: candidate.requestedVisualTier as RuntimeFidelityVisualTier,\\n        renderScaleOverride: candidate.renderScaleOverride as RuntimeFidelityRenderScale | null,\\n        runtimeProfileQuality: candidate.runtimeProfileQuality as RuntimeProfileQuality | null,\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"normalizeRuntimeFidelityIntent\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function normalizeSealedDeviceDefinitionProjection(value: unknown): SealedDeviceDefinitionProjection | null {\\n    try {\\n        assertProjectionEnvelope(value as SealedDeviceDefinitionProjection);\\n        const projection = value as SealedDeviceDefinitionProjection;\\n        const canonical = canonicalJson(projection.definition);\\n        const definition = JSON.parse(canonical) as DeviceDefinitionV1;\\n        if (definition.format !== 'helix.device' ||\\n            definition.formatVersion !== 1 ||\\n            typeof definition.id !== 'string' ||\\n            definition.id.length === 0 ||\\n            typeof definition.version !== 'string' ||\\n            definition.version.length === 0) {\\n            return null;\\n        }\\n        return deepFreeze({\\n            definition,\\n            definitionChecksumSha256: projection.definitionChecksumSha256.toLowerCase(),\\n            expiresAtEpochSeconds: projection.expiresAtEpochSeconds,\\n            pin: {\\n                packageId: projection.pin.packageId,\\n                version: projection.pin.version,\\n                manifestCid: projection.pin.manifestCid,\\n            },\\n        });\\n    }\\n    catch {\\n        return null;\\n    }\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/device-definition-resolver.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"normalizeSealedD"
    "eviceDefinitionProjection\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface PackageCustomizerContext {\\n    readonly source: PackageCustomizerSource | null;\\n    readonly subject: PackageCustomizerSubject | null;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PackageCustomizerContext\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PackageCustomizerSource = Readonly<{\\n    kind: 'trial';\\n    hostId: string;\\n    itemId: string;\\n}>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PackageCustomizerSource\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PackageCustomizerSubject = {\\n    readonly kind: 'package';\\n    readonly hostKind: string;\\n    readonly hostId: string;\\n    readonly packageId: string;\\n    readonly version: string;\\n    readonly renditions: readonly Readonly<{\\n        id: string;\\n        url: string;\\n    }>[];\\n    readonly board: Readonly<{\\n        id: string;\\n    }>;\\n    readonly assignments: Readonly<Record<string, string | null>>;\\n    readonly hiddenSlotIds?: readonly string[];\\n    readonly equipBoard: Readonly<Record<string, unknown>>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PackageCustomizerSubject\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type Party = {\\n    id: string;\\n    leaderId: string;\\n    maxSize: number;\\n    members: PartyMember[];\\n    code?: PartyCode;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"Party\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PartyCode = {\\n    code: string;\\n    expiresAt: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PartyCode\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PartyInvite = {\\n    id: string;\\n    partyId: string;\\n    from: PartyMember;\\n    expiresAt: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PartyInvite\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PartyInviteReceipt = {\\n    inviteId: string;\\n    expiresAt: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PartyInviteReceipt\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PartyMember = {\\n    userId: string;\\n    displayName: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PartyMember\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PartyState = {\\n    party: Party | null;\\n    invites: PartyInvite[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PartyState\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type"
    "\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface PingMessage {\\n    clientTimeMs: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PingMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface PlayerIdentity {\\n    id: string;\\n    displayName: string;\\n    userId: string;\\n    avatarUrl: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/state.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PlayerIdentity\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface PlayerReplicaState {\\n    position: Vec3;\\n    facingYawDeg: number;\\n    speed: number;\\n    moveDirectionDeg: number;\\n    verticalVelocity: number;\\n    grounded: boolean;\\n    crouched: boolean;\\n    ragdolled: boolean;\\n    ragdollLaunchX: number;\\n    ragdollLaunchZ: number;\\n    ragdollSpeedMps: number;\\n    aimYawDeg: number;\\n    aimPitchDeg: number;\\n    activeAbilities: string[];\\n    loopGesture: string;\\n    attachments: AttachmentEntry[];\\n    reachLeftActive: boolean;\\n    reachLeft: Vec3;\\n    reachRightActive: boolean;\\n    reachRight: Vec3;\\n    lookTargetActive: boolean;\\n    lookTarget: Vec3;\\n    shotSeq?: number;\\n    gunDrawn?: boolean;\\n    aiming?: boolean;\\n    reloading?: boolean;\\n    emotes?: EmoteEntry[];\\n    locomotionPack?: string;\\n    pairInitiator: string;\\n    pairSlot: string;\\n    pairStartMs: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/state.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PlayerReplicaState\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface PlayerState extends PlayerIdentity, PlayerReplicaState {\\n    vars: RoomVars;\\n    connected: boolean;\\n    active: boolean;\\n    posT: number;\\n    avatarRevision: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/room.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PlayerState\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface PongMessage {\\n    finalRestVersion?: 1;\\n    moduleFinalRestVersion?: 1;\\n    finalRestModules?: Record<string, number>;\\n    clientTimeMs: number;\\n    serverTimeMs: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PongMessage\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ProductGrant = {\\n    kind: 'item';\\n    itemId: string;\\n    quantity?: number;\\n} | {\\n    kind: 'pass';\\n    passKey?: string;\\n    durationSeconds?: number;\\n} | {\\n    kind: 'currency';\\n    code: string;\\n    amount: number;\\n    display?: 'wallet' | 'uses';\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ProductGrant\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PurchaseContext = {\\n    ref: string;\\n    title: string;\\n    description: string | null;\\n    thumbnailUrl: string | null;\\n    priceLix: number;\\n    isFree: boolean;\\n    balanceLix: number;\\n    balanceAfterLix: number;\\n    owned: boolean;\\n    ownedCount: number;\\n    maxPerPlayer?: number | null;\\n    maxPerUser?: number | null;\\n    eligible: boolean;\\n    eligibilityStatus: PurchaseStatus | null;\\n    quantity?: number;\\n    un"
    "itPriceLix?: number;\\n    totalPriceLix?: number;\\n    editionMode?: ItemEditionMode;\\n    supply?: number | null;\\n    minted?: number | null;\\n    remaining?: number | null;\\n    serialNumber?: number | null;\\n    distributionId?: string | null;\\n    listingId?: string | null;\\n    creatorName?: string | null;\\n    sellerName?: string | null;\\n    maxClaims?: number | null;\\n    startsAt?: string | null;\\n    endsAt?: string | null;\\n    verificationLevel?: AccountVerificationLevel;\\n    requiredVerificationLevel?: AccountVerificationLevel | null;\\n    resaleEligibleAt?: string | null;\\n    holdUntil?: string | null;\\n    grants?: ProductGrant[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PurchaseContext\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PurchaseOptions = {\\n    quantity?: number;\\n    idempotencyKey?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PurchaseOptions\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface PurchaseReceiptMessage {\\n    receipt: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PurchaseReceiptMessage\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PurchaseResult = {\\n    status: PurchaseStatus;\\n    completed: boolean;\\n    reason?: string;\\n    itemId?: string | null;\\n    balanceAfterLix?: number;\\n    priceLix?: number;\\n    balanceLix?: number;\\n    shortfallLix?: number;\\n    ownedCount?: number;\\n    maxPerPlayer?: number | null;\\n    maxPerUser?: number | null;\\n    requestedQuantity?: number;\\n    fulfilledQuantity?: number;\\n    distributionId?: string | null;\\n    listingId?: string | null;\\n    inventoryInstanceIds?: string[];\\n    serialNumbers?: number[];\\n    resaleEligibleAt?: string | null;\\n    receipt?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PurchaseResult\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type PurchaseStatus = 'Pending' | 'Granted' | 'Claimed' | 'AlreadyOwned' | 'InsufficientFunds' | 'MaxPerUserReached' | 'ProductInactive' | 'ProductNotFound' | 'NotInWorld' | 'Unauthorized' | 'RateLimited' | 'Cancelled' | 'Failed' | 'Timeout' | 'NotFound' | 'PriceChanged';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PurchaseStatus\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface PushOptions<R = unknown> {\\n    onResult?(result: ModeResult<R>): void;\\n    onEvent?(event: string, payload: unknown): void;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PushOptions\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface PushOutcome<R = unknown> {\\n    ok: boolean;\\n    error?: unknown;\\n    done: Promise<ModeResult<R>>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"PushOutcome\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type Quat = {\\n    x: number;\\n "
    "   y: number;\\n    z: number;\\n    w: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/state.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"Quat\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type QueueEndReason = 'cancelled' | 'timeout' | 'heartbeat-lapsed' | 'member-absent' | 'party-changed' | 'build-changed' | 'queue-removed' | 'replaced' | 'ended' | 'heartbeat-lost' | 'match-expired' | 'refused' | 'session-changed' | 'left';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"QueueEndReason\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type QueueStatus = {\\n    status: 'none' | 'waiting' | 'matched';\\n    queueId?: string;\\n    waiting?: QueueWaiting;\\n    match?: MatchFound;\\n    reason?: QueueEndReason;\\n    serverReason?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"QueueStatus\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type QueueWaiting = {\\n    players: number;\\n    needed: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/matchmaking.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"QueueWaiting\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const RECEIPT_LIMITS = {\\n    maxReceiptLength: 4096,\\n} as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"RECEIPT_LIMITS\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ReplicaInput = Omit<StateMessage, 'seq' | 'tMs' | 'teleportSeq'>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ReplicaInput\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const RESERVED_MESSAGE_TYPES = ['state', 'ability', 'action', 'gesture', 'attachments', 'purchaseReceipt', 'avatarRefresh', 'emoteRefresh', 'emoteJoin', 'entityState', 'entityStateBatch', 'ping', 'pong', 'stateAck', 'entityStateAck', 'groupRestSnapshot', 'moduleFused', 'moduleWake', 'moduleSleep', 'moduleEngagement', 'moduleEffect'] as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"RESERVED_MESSAGE_TYPES\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type ResolvedHelixMaterial = HelixMaterialDefinition & {\\n    maps?: HelixMaterialMapPaths;\\n    resolutions?: Record<string, HelixMaterialResolutionVariant>;\\n    resolution?: {\\n        key: string;\\n        pixels: number | null;\\n        available: string[];\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/materials.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ResolvedHelixMaterial\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const ROOM_CREDENTIAL_AUDIENCE = 'helix-instant-room' as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/credential.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"ROOM_CREDENTIAL_AUDIENCE\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n    "
    "    \"declarations\": [\n          {\n            \"declaration\": \"export interface RoomAccessors {\\n    vars: VarsView;\\n    me: VarsView;\\n    player(id: string): VarsView;\\n    phase(): string;\\n    currentTurn(): string;\\n    isMyTurn(): boolean;\\n    module(moduleId: string): ModuleAccessors;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-accessors.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomAccessors\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface RoomCredentialClaims {\\n    sub: string;\\n    displayName: string;\\n    avatarUrl?: string | null;\\n    worldId: string;\\n    buildId: string;\\n    baseBuildId?: string;\\n    scopes: string[];\\n    maxPlayers: number;\\n    buildNumber: number;\\n    configUrl: string;\\n    trial?: RoomTrialClaim;\\n    roomType?: string;\\n    instanceKey?: string;\\n    roomInit?: Record<string, RoomInitValue>;\\n    playerInit?: Record<string, RoomInitValue>;\\n    aud: typeof ROOM_CREDENTIAL_AUDIENCE;\\n    iss: string;\\n    exp: number;\\n    iat: number;\\n    jti: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/credential.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomCredentialClaims\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type RoomInitValue = number | boolean | string;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/credential.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomInitValue\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface RoomState {\\n    players: Record<string, PlayerState>;\\n    roomVars: RoomVars;\\n    entities: Record<string, EntityState>;\\n    serverTick: number;\\n    serverTimeMs: number;\\n    phase: string;\\n    phaseStartTick: number;\\n    timerDeadlines: Record<string, number>;\\n    modules?: Record<string, ModuleState>;\\n    dynamicModules?: Record<string, DynamicModuleState>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/room.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomState\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface RoomTicket {\\n    roomType: string;\\n    ticketId: string;\\n    instanceId: string;\\n    expiresAt: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomTicket\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface RoomTicketMessage {\\n    roomType: string;\\n    ticketId: string;\\n    instanceId: string;\\n    expiresAt: string | number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomTicketMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface RoomTrialClaim {\\n    id: string;\\n    itemId: string;\\n    kind: 'avatar' | 'vehicle';\\n    expiresAt: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/credential.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomTrialClaim\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type RoomVarCollection = number[] | string[] | boolean[] | RoomVarRecord[] | Record<string, number>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": "
    "\"src/multiplayer-contract/room.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomVarCollection\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type RoomVarRecord = Record<string, number | string | boolean | Vec3>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/room.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomVarRecord\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type RoomVars = Record<string, RoomVarValue>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/room.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomVars\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type RoomVarValue = number | string | boolean | Vec3 | null | RoomVarCollection;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/room.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RoomVarValue\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const RUNTIME_FIDELITY_RENDER_SCALES = ['1.5', '1', '0.77', '0.59'] as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"RUNTIME_FIDELITY_RENDER_SCALES\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const RUNTIME_FIDELITY_VERSION = 1 as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"RUNTIME_FIDELITY_VERSION\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const RUNTIME_FIDELITY_VISUAL_TIERS = [\\n    'auto',\\n    'minimal',\\n    'low',\\n    'medium',\\n    'high',\\n    'ultra',\\n] as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"RUNTIME_FIDELITY_VISUAL_TIERS\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const RUNTIME_PROFILE_QUALITIES = ['minimum', 'balanced', 'high', 'ultra'] as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"RUNTIME_PROFILE_QUALITIES\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type RuntimeFidelityIntent = {\\n    version: typeof RUNTIME_FIDELITY_VERSION;\\n    requestedVisualTier: RuntimeFidelityVisualTier;\\n    renderScaleOverride: RuntimeFidelityRenderScale | null;\\n    runtimeProfileQuality: RuntimeProfileQuality | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RuntimeFidelityIntent\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type RuntimeFidelityRenderScale = (typeof RUNTIME_FIDELITY_RENDER_SCALES)[number];\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RuntimeFidelityRenderScale\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type RuntimeFidelityVisualTier = (typeof RUNTIME_FIDELITY_VISUAL_TIERS)[number];\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\","
    "\n        \"name\": \"RuntimeFidelityVisualTier\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type RuntimeProfileQuality = (typeof RUNTIME_PROFILE_QUALITIES)[number];\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"RuntimeProfileQuality\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const sameFinalRestScope = (a?: FinalRestProvenance, b?: FinalRestProvenance): boolean => a?.moduleId === b?.moduleId && a?.generation === b?.generation && a?.engagementEpoch === b?.engagementEpoch;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"sameFinalRestScope\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type SavedPhoto = {\\n    assetId: string;\\n    url: string;\\n    thumbnailUrl: string;\\n    worldName: string;\\n    createdAt: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"SavedPhoto\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface SealedDeviceDefinitionPin {\\n    packageId: string;\\n    version: string;\\n    manifestCid: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/device-definition-resolver.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"SealedDeviceDefinitionPin\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface SealedDeviceDefinitionProjection {\\n    definition: DeviceDefinitionV1;\\n    definitionChecksumSha256: string;\\n    expiresAtEpochSeconds: number;\\n    pin: SealedDeviceDefinitionPin;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/device-definition-resolver.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"SealedDeviceDefinitionProjection\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface SealedDeviceDefinitionResolver extends WorldDeviceDefinitionResolver {\\n    dispose(): void;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/device-definition-resolver.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"SealedDeviceDefinitionResolver\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface SealedDeviceDefinitionResolverOptions {\\n    sha256?: (bytes: ArrayBuffer) => Promise<string>;\\n    now?: () => number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/device-definition-resolver.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"SealedDeviceDefinitionResolverOptions\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface ServerMessagePayloads {\\n    [ServerMessageType.Pong]: PongMessage;\\n    [ServerMessageType.StateAck]: StateAckMessage;\\n    [ServerMessageType.EntityStateAck]: EntityStateAckMessage;\\n    [ServerMessageType.Gesture]: GestureEventMessage;\\n    [ServerMessageType.GroupRestSnapshot]: GroupRestSnapshotMessage;\\n    [ServerMessageType.ModuleFused]: ModuleFusedMessage;\\n    [ServerMessageType.ModuleWake]: ModuleWakeMessage;\\n    [ServerMessageType.ModuleSleep]: ModuleSleepMessage;\\n    [ServerMessageType.ModuleEngagement]: ModuleEngagementMessage;\\n    [ServerMessageType.ModuleEffect]: ModuleEffectMessage;\\n    [ServerMessageType.VehicleEntityRetired]: VehicleEntityRetiredMessage;\\n"
    "    [ServerMessageType.VehicleActionFences]: VehicleActionFencesMessage;\\n    [ServerMessageType.RoomTicket]: RoomTicketMessage;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"ServerMessagePayloads\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const ServerMessageType = {\\n    Pong: 'pong',\\n    StateAck: 'stateAck',\\n    EntityStateAck: 'entityStateAck',\\n    Gesture: 'gesture',\\n    GroupRestSnapshot: 'groupRestSnapshot',\\n    ModuleFused: 'moduleFused',\\n    ModuleWake: 'moduleWake',\\n    ModuleSleep: 'moduleSleep',\\n    ModuleEngagement: 'moduleEngagement',\\n    ModuleEffect: 'moduleEffect',\\n    VehicleEntityRetired: '__helix:vehicleEntityRetired',\\n    VehicleActionFences: '__helix:vehicleActionFences',\\n    RoomTicket: 'helix:room-ticket',\\n} as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          },\n          {\n            \"declaration\": \"export type ServerMessageType = (typeof ServerMessageType)[keyof typeof ServerMessageType];\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"ServerMessageType\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type StandardModeAction = 'move' | 'look' | 'primary' | 'secondary' | 'tertiary' | 'cancel';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"StandardModeAction\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface StateAckMessage {\\n    seq: number;\\n    position: Vec3;\\n    teleportSeq?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"StateAckMessage\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface StateMessage {\\n    seq: number;\\n    position: Vec3;\\n    facingYawDeg: number;\\n    speed: number;\\n    moveDirectionDeg: number;\\n    verticalVelocity: number;\\n    grounded: boolean;\\n    crouched: boolean;\\n    ragdolled?: boolean;\\n    ragdollLaunchX?: number;\\n    ragdollLaunchZ?: number;\\n    ragdollSpeedMps?: number;\\n    aimYawDeg: number;\\n    aimPitchDeg: number;\\n    tMs?: number;\\n    teleportSeq?: number;\\n    reachLeft?: Vec3;\\n    reachRight?: Vec3;\\n    lookTarget?: Vec3;\\n    shotSeq?: number;\\n    gunDrawn?: boolean;\\n    aiming?: boolean;\\n    reloading?: boolean;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"StateMessage\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface Suppression {\\n    locomotion?: boolean;\\n    cameraControl?: boolean;\\n    defaultHud?: boolean;\\n    interaction?: boolean;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"Suppression\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type SwitchRoomOptions = Omit<JoinRoomOptions, 'roomType' | 'ticket'>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"SwitchRoomOptions\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declaration"
    "s\": [\n          {\n            \"declaration\": \"export type SwitchRoomTarget = {\\n    ticket: string;\\n} | {\\n    roomType?: string;\\n    preferInstanceId?: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"SwitchRoomTarget\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type TouchBinding = TouchPresentation;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"TouchBinding\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type TouchKind = TouchPresentationKind;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"TouchKind\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface TouchPresentation {\\n    kind: TouchPresentationKind;\\n    zone: TouchPresentationZone;\\n    group?: string;\\n    order?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"TouchPresentation\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type TouchPresentationKind = 'button' | 'drag' | 'tap' | 'hold' | 'stick' | 'none';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"TouchPresentationKind\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type TouchPresentationZone = 'surface' | 'primary' | 'secondary' | 'left' | 'right';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"TouchPresentationZone\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const UNITS = {\\n    position: 'meters',\\n    velocity: 'meters/second',\\n    angles: 'degrees',\\n} as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/multiplayer-contract/state.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"UNITS\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class UniversalActionSurface {\\n    readonly element: HTMLElement;\\n    readonly #document: Document;\\n    readonly #hints: ActionSurfaceHintSource;\\n    readonly #onInvoke: (invocation: ActionSurfaceInvocation) => void;\\n    readonly #onDismiss?: (instanceId: string) => void;\\n    readonly #onOpenChange?: (open: boolean) => void;\\n    readonly #title: HTMLElement;\\n    readonly #status: HTMLElement;\\n    readonly #list: HTMLElement;\\n    readonly #hint: HTMLElement;\\n    readonly #unsubscribeHints: () => void;\\n    #snapshot: ActionSurfaceSnapshot | null = null;\\n    #actions: ActionSurfaceAction[] = [];\\n    #cursor = 0;\\n    #mode: SurfaceMode = { type: 'browse' };\\n    #lastPointer = { x: Number.NaN, y: Number.NaN };\\n    #pointerBaseline = { x: Number.NaN, y: Number.NaN };\\n    #pointerActive = false;\\n    #touchObserved = false;\\n    #navHeld: -1 | 0 | 1 | null = null;\\n    #dismissedFor: string | null = null;\\n    #disposed = false;\\n    constructor(options: UniversalActionSurfaceOptions) {\\n        this.#document = options.document ?? options.host.ownerDocument;\\n        this.#hints = options.hints;\\n        this.#onInvoke = options.onInvoke;\\n        this.#onDismiss = options.onDismiss;\\n        this.#onOpenChange = options.onOpenCha"
    "nge;\\n        ensureActionSurfaceStyles(this.#document);\\n        this.element = make(this.#document, 'section', 'helix-action-surface');\\n        this.element.dataset.testid = 'action-surface';\\n        this.element.setAttribute('aria-live', 'polite');\\n        this.element.hidden = true;\\n        const header = make(this.#document, 'header', 'helix-action-surface__header');\\n        this.#title = make(this.#document, 'h2', 'helix-action-surface__title');\\n        this.#status = make(this.#document, 'span', 'helix-action-surface__status');\\n        const close = make(this.#document, 'button', 'helix-action-surface__close') as HTMLButtonElement;\\n        close.type = 'button';\\n        close.dataset.testid = 'action-surface-close';\\n        close.setAttribute('aria-label', 'Close');\\n        close.textContent = '✕';\\n        close.addEventListener('click', () => this.cancel());\\n        header.append(this.#title, this.#status, close);\\n        this.#list = make(this.#document, 'div', 'helix-action-surface__list');\\n        this.#list.addEventListener('pointermove', (event) => this.#onListPointerMove(event as PointerEvent));\\n        this.element.addEventListener('pointerdown', (event) => this.observePointer((event as PointerEvent).pointerType));\\n        this.#hint = make(this.#document, 'footer', 'helix-action-surface__hint');\\n        this.element.append(header, this.#list, this.#hint);\\n        options.host.append(this.element);\\n        this.#unsubscribeHints = this.#hints.subscribe?.(() => this.#renderHints()) ?? (() => undefined);\\n    }\\n    get isOpen(): boolean { return this.#snapshot !== null; }\\n    get instanceId(): string | null { return this.#snapshot?.instanceId ?? null; }\\n    get mode(): 'browse' | 'number' | 'text' | 'picker' { return this.#mode.type; }\\n    get selectedAction(): ActionSurfaceAction | null { return this.#actions[this.#cursor] ?? null; }\\n    get visibleActions(): readonly ActionSurfaceAction[] { return this.#actions; }\\n    get liveNumber(): number | null { return this.#mode.type === 'number' ? this.#mode.value : null; }\\n    get liveText(): string | null { return this.#mode.type === 'text' ? this.#mode.value : null; }\\n    setSnapshot(snapshot: ActionSurfaceSnapshot | null): void {\\n        this.#assertLive();\\n        if (snapshot === null) {\\n            this.hide();\\n            return;\\n        }\\n        if (this.#dismissedFor === snapshot.instanceId)\\n            return;\\n        const errors = validateActionSurfaceSnapshot(snapshot);\\n        if (errors.length)\\n            throw new Error(`invalid action-surface snapshot: ${errors.join('; ')}`);\\n        const wasOpen = this.isOpen;\\n        const sameInstance = this.#snapshot?.instanceId === snapshot.instanceId;\\n        const selectedId = sameInstance ? this.selectedAction?.id : undefined;\\n        const visible = snapshot.actions.filter((action) => action.visible !== false);\\n        this.#snapshot = snapshot;\\n        this.#actions = visible;\\n        if (!sameInstance) {\\n            this.#mode = { type: 'browse' };\\n            this.#cursor = firstEnabled(visible, snapshot.availability);\\n            this.#navHeld = null;\\n            this.#parkPointer();\\n        }\\n        else {\\n            const selectedIndex = selectedId ? visible.findIndex((action) => action.id === selectedId) : -1;\\n            this.#cursor = selectedIndex >= 0 ? selectedIndex : Math.min(this.#cursor, Math.max(0, visible.length - 1));\\n            this.#refreshSustainedAction();\\n        }\\n        if (visible.length === 0) {\\n            this.hide();\\n            return;\\n        }\\n        this.element.hidden = false;\\n        this.#title.textContent = snapshot.title;\\n        this.#renderStatus();\\n        if (this.#mode.type === 'number' && sameInstance)\\n            this.#refreshNumberDom();\\n        else if (this.#mode.type === 'text' && sameInstance)\\n            this.#refreshTextDom();\\n        else\\n            this.#render();\\n        if (!wasOpen)\\n            this.#onOpenChange?.(true);\\n    }\\n    hide(): void {\\n        if (!this.isO"
    "pen)\\n            return;\\n        this.#snapshot = null;\\n        this.#actions = [];\\n        this.#cursor = 0;\\n        this.#mode = { type: 'browse' };\\n        this.#navHeld = null;\\n        this.element.hidden = true;\\n        this.#list.replaceChildren();\\n        this.#hint.replaceChildren();\\n        this.#onOpenChange?.(false);\\n    }\\n    dismiss(): void {\\n        const id = this.#snapshot?.instanceId;\\n        if (!id)\\n            return;\\n        this.#dismissedFor = id;\\n        this.hide();\\n        this.#onDismiss?.(id);\\n    }\\n    rearm(): void { this.#dismissedFor = null; }\\n    refreshHints(): void {\\n        this.#assertLive();\\n        this.#renderHints();\\n    }\\n    observePointer(pointerType: string): void {\\n        this.#assertLive();\\n        const touch = pointerType === 'touch';\\n        if (touch === this.#touchObserved)\\n            return;\\n        this.#touchObserved = touch;\\n        this.#renderHints();\\n    }\\n    move(delta: -1 | 1): void {\\n        if (!this.#snapshot || this.#actions.length === 0)\\n            return;\\n        this.#parkPointer();\\n        if (this.#touchObserved) {\\n            this.#touchObserved = false;\\n            this.#renderHints();\\n        }\\n        if (this.#mode.type === 'number') {\\n            this.#setNumber(this.#mode.value + delta * (this.#mode.action.step ?? 0.01));\\n            return;\\n        }\\n        if (this.#mode.type === 'picker') {\\n            this.#movePicker(delta);\\n            return;\\n        }\\n        const count = this.#actions.length;\\n        let index = this.#cursor;\\n        for (let step = 0; step < count; step++) {\\n            index = (index + delta + count) % count;\\n            if (isActionEnabled(this.#actions[index], this.#snapshot.availability))\\n                break;\\n        }\\n        this.#cursor = index;\\n        this.#refreshBrowseSelection();\\n    }\\n    confirm(): void {\\n        const action = this.#mode.type === 'browse' ? this.selectedAction : this.#mode.action;\\n        if (!action || !this.#snapshot)\\n            return;\\n        if (this.#mode.type === 'number') {\\n            this.#endSustained();\\n            return;\\n        }\\n        if (this.#mode.type === 'text') {\\n            this.#onInvoke({ action, kind: 'text', value: this.#mode.value });\\n            this.#endSustained();\\n            return;\\n        }\\n        if (this.#mode.type === 'picker') {\\n            const option = action.options?.[this.#mode.index];\\n            if (option && option.disabled !== true) {\\n                this.#onInvoke({ action, kind: action.kind as 'choice' | 'asset', value: option.value });\\n                this.#endSustained();\\n            }\\n            return;\\n        }\\n        if (!isActionEnabled(action, this.#snapshot.availability))\\n            return;\\n        if (action.kind === 'number') {\\n            this.#beginNumber(action);\\n            return;\\n        }\\n        if (action.kind === 'text') {\\n            this.#beginText(action);\\n            return;\\n        }\\n        if (action.kind === 'choice' || action.kind === 'asset') {\\n            this.#beginPicker(action);\\n            return;\\n        }\\n        this.#onInvoke({ action, kind: action.kind });\\n    }\\n    cancel(): void {\\n        if (this.#mode.type !== 'browse')\\n            this.#endSustained();\\n        else\\n            this.dismiss();\\n    }\\n    endEngagement(): void {\\n        this.#navHeld = null;\\n        if (this.#mode.type === 'browse')\\n            return;\\n        this.#endSustained();\\n    }\\n    handleVerb(verb: 'navigate' | 'activate' | 'back', event: VerbEvent): void {\\n        if (verb === 'navigate' && event.phase === 'end') {\\n            this.#navHeld = null;\\n            return;\\n        }\\n        if (event.phase === 'end')\\n            return;\\n        if (verb === 'activate') {\\n            if (event.phase === 'start')\\n                this.confirm();\\n            return;\\n        }\\n        if (verb === 'back') {\\n            if (event.phase === 'start')\\n                this.cancel();\\n            retu"
    "rn;\\n        }\\n        const vector = event.vector;\\n        if (!vector)\\n            return;\\n        if (this.#mode.type === 'text')\\n            return;\\n        const axis = this.#mode.type === 'number'\\n            ? Math.abs(vector.x) >= Math.abs(vector.y)\\n                ? vector.x\\n                : vector.y\\n            : Math.abs(vector.y) >= Math.abs(vector.x)\\n                ? vector.y\\n                : -vector.x;\\n        const delta: -1 | 1 = this.#mode.type === 'number'\\n            ? axis > 0\\n                ? 1\\n                : -1\\n            : axis > 0\\n                ? -1\\n                : 1;\\n        const direction = axis === 0 ? 0 : delta;\\n        if (event.phase === 'start') {\\n            this.#navHeld = Math.abs(axis) >= NAV_PRESS ? direction : 0;\\n            if (Math.abs(axis) >= NAV_PRESS)\\n                this.move(delta);\\n            return;\\n        }\\n        if (this.#navHeld === null || Math.abs(axis) < NAV_PRESS)\\n            return;\\n        this.#navHeld = direction;\\n        this.move(delta);\\n    }\\n    dispose(): void {\\n        if (this.#disposed)\\n            return;\\n        this.#disposed = true;\\n        this.#unsubscribeHints();\\n        this.element.remove();\\n        this.#snapshot = null;\\n        this.#actions = [];\\n        this.#navHeld = null;\\n    }\\n    #beginNumber(action: ActionSurfaceAction): void {\\n        const min = action.min ?? 0;\\n        const max = action.max ?? 1;\\n        const initial = typeof action.value === 'number' ? action.value : min;\\n        this.#mode = { type: 'number', action, value: clamp(initial, min, max) };\\n        this.#render();\\n    }\\n    #beginText(action: ActionSurfaceAction): void {\\n        const initial = typeof action.value === 'string' ? action.value : '';\\n        this.#mode = { type: 'text', action, value: initial.slice(0, action.maxLength ?? 4096) };\\n        this.#render();\\n    }\\n    #beginPicker(action: ActionSurfaceAction): void {\\n        const options = action.options ?? [];\\n        if (options.length === 0)\\n            return;\\n        const current = action.value === undefined || action.value === null\\n            ? -1\\n            : options.findIndex((option) => option.value === String(action.value));\\n        const first = firstEnabledOption(options, current >= 0 ? current : 0);\\n        this.#mode = { type: 'picker', action, index: first };\\n        this.#render();\\n    }\\n    #movePicker(delta: -1 | 1): void {\\n        if (this.#mode.type !== 'picker')\\n            return;\\n        const options = this.#mode.action.options ?? [];\\n        if (options.length === 0)\\n            return;\\n        let index = this.#mode.index;\\n        for (let step = 0; step < options.length; step++) {\\n            index = (index + delta + options.length) % options.length;\\n            if (options[index].disabled !== true)\\n                break;\\n        }\\n        this.#mode.index = index;\\n        this.#render();\\n    }\\n    #setNumber(raw: number): void {\\n        if (this.#mode.type !== 'number' || !Number.isFinite(raw))\\n            return;\\n        const action = this.#mode.action;\\n        const min = action.min ?? 0;\\n        const max = action.max ?? 1;\\n        const step = action.step ?? 0.01;\\n        const rounded = roundToStep(clamp(raw, min, max), min, step);\\n        if (!Number.isFinite(rounded))\\n            return;\\n        const value = clamp(rounded, min, max);\\n        if (value === this.#mode.value)\\n            return;\\n        this.#mode.value = value;\\n        this.#refreshNumberDom();\\n        this.#onInvoke({ action, kind: 'number', value });\\n    }\\n    #endSustained(): void {\\n        this.#parkPointer();\\n        const active = this.#document.activeElement;\\n        if (active instanceof this.#document.defaultView!.HTMLElement && this.#list.contains(active))\\n            active.blur();\\n        this.#mode = { type: 'browse' };\\n        this.#render();\\n    }\\n    #refreshSustainedAction(): void {\\n        const mode = this.#mode;\\n        if (mode.type === 'browse' || !this.#snapshot"
    ")\\n            return;\\n        const focusedValue = mode.type === 'picker' ? mode.action.options?.[mode.index]?.value : undefined;\\n        const action = this.#actions.find((candidate) => candidate.id === mode.action.id);\\n        if (!action || !isActionEnabled(action, this.#snapshot.availability) || action.kind !== mode.action.kind) {\\n            this.#mode = { type: 'browse' };\\n            return;\\n        }\\n        mode.action = action;\\n        if (mode.type === 'number') {\\n            mode.value = clamp(mode.value, action.min ?? 0, action.max ?? 1);\\n        }\\n        if (mode.type === 'picker') {\\n            const options = action.options ?? [];\\n            const index = focusedValue ? options.findIndex((option) => option.value === focusedValue) : -1;\\n            mode.index = firstEnabledOption(options, index >= 0 ? index : 0);\\n        }\\n    }\\n    #render(): void {\\n        if (!this.#snapshot)\\n            return;\\n        this.#renderStatus();\\n        if (this.#mode.type === 'number')\\n            this.#renderNumber();\\n        else if (this.#mode.type === 'text')\\n            this.#renderText();\\n        else if (this.#mode.type === 'picker')\\n            this.#renderPicker();\\n        else\\n            this.#renderBrowse();\\n        this.#renderHints();\\n    }\\n    #renderStatus(): void {\\n        const availability = this.#snapshot?.availability;\\n        this.#status.textContent = availability?.state === 'available'\\n            ? ''\\n            : availability?.label ?? (availability?.state === 'occupied' ? 'Occupied' : availability?.state === 'busy' ? 'Busy' : '');\\n        this.#status.dataset.state = availability?.state ?? 'available';\\n    }\\n    #renderBrowse(): void {\\n        this.element.dataset.mode = 'browse';\\n        const rows = this.#actions.map((action, index) => {\\n            const button = make(this.#document, 'button', 'helix-action-surface__row') as HTMLButtonElement;\\n            const enabled = isActionEnabled(action, this.#snapshot?.availability);\\n            button.type = 'button';\\n            button.dataset.testid = `action-${action.id}`;\\n            button.dataset.index = String(index);\\n            button.dataset.selected = String(index === this.#cursor);\\n            button.setAttribute('aria-selected', String(index === this.#cursor));\\n            button.disabled = !enabled;\\n            const label = make(this.#document, 'span', 'helix-action-surface__label');\\n            label.textContent = action.label;\\n            const metaText = actionMeta(action);\\n            button.append(label);\\n            if (metaText) {\\n                const meta = make(this.#document, 'span', 'helix-action-surface__meta');\\n                meta.textContent = metaText;\\n                button.append(meta);\\n            }\\n            button.addEventListener('click', () => {\\n                this.#pointerActive = true;\\n                this.#cursor = index;\\n                this.#refreshBrowseSelection();\\n                this.confirm();\\n            });\\n            return button;\\n        });\\n        this.#list.replaceChildren(...rows);\\n    }\\n    #onListPointerMove(event: PointerEvent): void {\\n        if (event.clientX === this.#lastPointer.x && event.clientY === this.#lastPointer.y)\\n            return;\\n        this.#lastPointer = { x: event.clientX, y: event.clientY };\\n        if (event.pointerType === 'touch')\\n            return;\\n        if (this.#mode.type !== 'browse')\\n            return;\\n        if (!this.#pointerActive) {\\n            const dx = event.clientX - this.#pointerBaseline.x;\\n            const dy = event.clientY - this.#pointerBaseline.y;\\n            if (Math.hypot(dx, dy) < POINTER_WAKE_PX)\\n                return;\\n            this.#pointerActive = true;\\n        }\\n        const row = (event.target as Element | null)?.closest?.('[data-index]');\\n        if (!(row instanceof this.#document.defaultView!.HTMLElement))\\n            return;\\n        if (row.hasAttribute('disabled'))\\n            return;\\n        const index = Number(row.dataset.index)"
    ";\\n        if (!Number.isInteger(index) || index === this.#cursor)\\n            return;\\n        this.#cursor = index;\\n        this.#refreshBrowseSelection();\\n    }\\n    #parkPointer(): void {\\n        this.#pointerActive = false;\\n        this.#pointerBaseline = { ...this.#lastPointer };\\n    }\\n    #refreshBrowseSelection(): void {\\n        if (this.#mode.type !== 'browse')\\n            return;\\n        for (const row of this.#list.querySelectorAll<HTMLElement>('[data-index]')) {\\n            const selected = Number(row.dataset.index) === this.#cursor;\\n            row.dataset.selected = String(selected);\\n            row.setAttribute('aria-selected', String(selected));\\n        }\\n    }\\n    #renderNumber(): void {\\n        if (this.#mode.type !== 'number')\\n            return;\\n        const action = this.#mode.action;\\n        const min = action.min ?? 0;\\n        const max = action.max ?? 1;\\n        this.element.dataset.mode = 'number';\\n        const wrap = make(this.#document, 'div', 'helix-action-surface__adjust');\\n        wrap.dataset.testid = `number-${action.id}`;\\n        const head = make(this.#document, 'div', 'helix-action-surface__adjust-head');\\n        const label = make(this.#document, 'span', 'helix-action-surface__label');\\n        label.textContent = action.label;\\n        const output = make(this.#document, 'output', 'helix-action-surface__value') as HTMLOutputElement;\\n        output.dataset.testid = 'number-value';\\n        head.append(label, output);\\n        const input = make(this.#document, 'input', 'helix-action-surface__range') as HTMLInputElement;\\n        input.type = 'range';\\n        input.min = String(min);\\n        input.max = String(max);\\n        input.step = String(action.step ?? 0.01);\\n        input.dataset.testid = 'number-range';\\n        input.setAttribute('aria-label', action.label);\\n        const push = () => this.#setNumber(Number(input.value));\\n        input.addEventListener('input', push);\\n        input.addEventListener('change', push);\\n        const submit = make(this.#document, 'button', 'helix-action-surface__number-submit') as HTMLButtonElement;\\n        submit.type = 'button';\\n        submit.dataset.testid = 'number-submit';\\n        submit.textContent = 'Done';\\n        submit.addEventListener('click', () => this.confirm());\\n        wrap.append(head, input, submit);\\n        this.#list.replaceChildren(wrap);\\n        this.#refreshNumberDom();\\n    }\\n    #refreshNumberDom(): void {\\n        if (this.#mode.type !== 'number')\\n            return;\\n        const action = this.#mode.action;\\n        const value = this.#mode.value;\\n        const output = this.#list.querySelector<HTMLOutputElement>('[data-testid=\\\"number-value\\\"]');\\n        if (output)\\n            output.textContent = formatNumber(value, action.step, action.unit);\\n        const input = this.#list.querySelector<HTMLInputElement>('[data-testid=\\\"number-range\\\"]');\\n        if (input) {\\n            input.min = String(action.min ?? 0);\\n            input.max = String(action.max ?? 1);\\n            input.step = String(action.step ?? 0.01);\\n            input.setAttribute('aria-label', action.label);\\n            if (Number(input.value) !== value)\\n                input.value = String(value);\\n        }\\n    }\\n    #renderText(): void {\\n        if (this.#mode.type !== 'text')\\n            return;\\n        const action = this.#mode.action;\\n        this.element.dataset.mode = 'text';\\n        const wrap = make(this.#document, 'div', 'helix-action-surface__text');\\n        wrap.dataset.testid = `text-${action.id}`;\\n        const label = make(this.#document, 'label', 'helix-action-surface__label') as HTMLLabelElement;\\n        label.textContent = action.label;\\n        const input = make(this.#document, 'input', 'helix-action-surface__text-input') as HTMLInputElement;\\n        input.type = 'text';\\n        input.dataset.testid = 'text-input';\\n        input.value = this.#mode.value;\\n        input.placeholder = action.placeholder ?? '';\\n        input.inputMode = action.inputMode ?? 'text';\\n    "
    "    if (action.maxLength !== undefined)\\n            input.maxLength = action.maxLength;\\n        label.htmlFor = `${this.#snapshot?.instanceId ?? 'action'}-${action.id}-input`;\\n        input.id = label.htmlFor;\\n        input.addEventListener('input', () => {\\n            if (this.#mode.type === 'text')\\n                this.#mode.value = input.value;\\n        });\\n        input.addEventListener('keydown', (event) => {\\n            event.stopPropagation();\\n            if (event.key === 'Enter' && !event.isComposing) {\\n                event.preventDefault();\\n                this.confirm();\\n            }\\n            else if (event.key === 'Escape') {\\n                event.preventDefault();\\n                this.cancel();\\n            }\\n        });\\n        const submit = make(this.#document, 'button', 'helix-action-surface__text-submit') as HTMLButtonElement;\\n        submit.type = 'button';\\n        submit.dataset.testid = 'text-submit';\\n        submit.textContent = 'Submit';\\n        submit.addEventListener('click', () => this.confirm());\\n        wrap.append(label, input, submit);\\n        this.#list.replaceChildren(wrap);\\n        input.focus({ preventScroll: true });\\n    }\\n    #refreshTextDom(): void {\\n        if (this.#mode.type !== 'text')\\n            return;\\n        const action = this.#mode.action;\\n        const input = this.#list.querySelector<HTMLInputElement>('[data-testid=\\\"text-input\\\"]');\\n        if (!input)\\n            return;\\n        input.placeholder = action.placeholder ?? '';\\n        input.inputMode = action.inputMode ?? 'text';\\n        if (action.maxLength !== undefined)\\n            input.maxLength = action.maxLength;\\n        else\\n            input.removeAttribute('maxlength');\\n        if (this.#document.activeElement !== input)\\n            input.value = this.#mode.value;\\n    }\\n    #renderPicker(): void {\\n        if (this.#mode.type !== 'picker')\\n            return;\\n        const action = this.#mode.action;\\n        this.element.dataset.mode = 'picker';\\n        const current = action.value === undefined || action.value === null ? null : String(action.value);\\n        const rows = (action.options ?? []).map((option, index) => {\\n            const button = make(this.#document, 'button', 'helix-action-surface__row') as HTMLButtonElement;\\n            button.type = 'button';\\n            button.dataset.testid = `option-${option.value}`;\\n            button.dataset.selected = String(index === this.#modePickerIndex());\\n            button.dataset.current = String(option.value === current);\\n            button.setAttribute('role', 'radio');\\n            button.setAttribute('aria-selected', String(index === this.#modePickerIndex()));\\n            button.setAttribute('aria-checked', String(option.value === current));\\n            button.disabled = option.disabled === true;\\n            const mark = make(this.#document, 'span', 'helix-action-surface__mark');\\n            mark.textContent = option.value === current ? '✓' : '';\\n            mark.setAttribute('aria-hidden', 'true');\\n            const label = make(this.#document, 'span', 'helix-action-surface__label');\\n            label.textContent = option.label;\\n            button.append(mark, label);\\n            if (option.reason) {\\n                const reason = make(this.#document, 'span', 'helix-action-surface__meta');\\n                reason.textContent = option.reason;\\n                button.append(reason);\\n            }\\n            button.addEventListener('click', () => {\\n                if (this.#mode.type !== 'picker')\\n                    return;\\n                this.#mode.index = index;\\n                this.confirm();\\n            });\\n            return button;\\n        });\\n        this.#list.replaceChildren(...rows);\\n    }\\n    #modePickerIndex(): number { return this.#mode.type === 'picker' ? this.#mode.index : -1; }\\n    #renderHints(): void {\\n        if (!this.#snapshot)\\n            return;\\n        const reported = this.#hints.activeDevice();\\n        const device = this.#touchObserved && reported ==="
    " 'keyboard' ? 'touch' : reported;\\n        this.element.dataset.device = device;\\n        const rows: Array<[\\n            StandardModeAction,\\n            string\\n        ]> = this.#mode.type === 'number'\\n            ? [['move', 'adjust'], ['primary', 'done'], ['cancel', 'back']]\\n            : this.#mode.type === 'text'\\n                ? [['primary', 'submit'], ['cancel', 'back']]\\n                : this.#mode.type === 'picker'\\n                    ? [['move', 'choose'], ['primary', 'set'], ['cancel', 'back']]\\n                    : [['move', 'choose'], ['primary', 'select'], ['cancel', 'close']];\\n        const fragments: HTMLElement[] = [];\\n        for (const [action, label] of rows) {\\n            const hint = make(this.#document, 'span', 'helix-action-surface__hint-item');\\n            const key = make(this.#document, 'kbd', 'helix-action-surface__key');\\n            key.textContent = this.#hints.hint(action as 'move' | 'primary' | 'cancel');\\n            const text = make(this.#document, 'span', 'helix-action-surface__hint-label');\\n            text.textContent = label;\\n            hint.append(key, text);\\n            fragments.push(hint);\\n        }\\n        this.#hint.replaceChildren(...fragments);\\n    }\\n    #assertLive(): void {\\n        if (this.#disposed)\\n            throw new Error('action surface is disposed');\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"UniversalActionSurface\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface UniversalActionSurfaceOptions {\\n    host: HTMLElement;\\n    hints: ActionSurfaceHintSource;\\n    onInvoke(invocation: ActionSurfaceInvocation): void;\\n    onDismiss?(instanceId: string): void;\\n    onOpenChange?(open: boolean): void;\\n    document?: Document;\\n    now?(): number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"UniversalActionSurfaceOptions\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function validateActionSurfaceSnapshot(snapshot: ActionSurfaceSnapshot): string[] {\\n    const errors: string[] = [];\\n    if (!snapshot.instanceId.trim())\\n        errors.push('instanceId is required');\\n    if (!snapshot.title.trim())\\n        errors.push('title is required');\\n    const ids = new Set<string>();\\n    for (const [index, action] of snapshot.actions.entries()) {\\n        const at = `actions[${index}]`;\\n        if (!action.id.trim())\\n            errors.push(`${at}.id is required`);\\n        else if (ids.has(action.id))\\n            errors.push(`${at}.id duplicates '${action.id}'`);\\n        else\\n            ids.add(action.id);\\n        if (!action.label.trim())\\n            errors.push(`${at}.label is required`);\\n        if (!ACTION_KINDS.has(action.kind))\\n            errors.push(`${at}.kind '${String(action.kind)}' is unsupported`);\\n        if (action.enabled === false && !readableReason(action)) {\\n            errors.push(`${at} is disabled without a player-readable reason`);\\n        }\\n        if (action.kind === 'number') {\\n            const min = action.min ?? 0;\\n            const max = action.max ?? 1;\\n            const step = action.step ?? 0.01;\\n            if (![min, max, step].every((value) => Number.isFinite(value))) {\\n                errors.push(`${at} has non-finite number bounds`);\\n            }\\n            else {\\n                if (max <= min)\\n                    errors.push(`${at}.max must be greater than min`);\\n                if (step <= 0)\\n                    errors.push(`${at}.step must be positive`);\\n            }\\n            if (action.value !== undefined && action.value !== null && typeof action.value !== 'number') {\\n                errors.push(`${at}.value must be a number`);\\n            }\\n            "
    "else if (typeof action.value === 'number' && !Number.isFinite(action.value)) {\\n                errors.push(`${at}.value must be finite`);\\n            }\\n        }\\n        if (action.kind === 'text') {\\n            if (action.value !== undefined && action.value !== null && typeof action.value !== 'string') {\\n                errors.push(`${at}.value must be a string`);\\n            }\\n            if (action.maxLength !== undefined && (!Number.isInteger(action.maxLength) || action.maxLength < 1 || action.maxLength > 4096)) {\\n                errors.push(`${at}.maxLength must be an integer between 1 and 4096`);\\n            }\\n        }\\n        if (action.kind === 'choice' || action.kind === 'asset') {\\n            const optionValues = new Set<string>();\\n            for (const [optionIndex, option] of (action.options ?? []).entries()) {\\n                const optionAt = `${at}.options[${optionIndex}]`;\\n                if (!option.value)\\n                    errors.push(`${optionAt}.value is required`);\\n                else if (optionValues.has(option.value))\\n                    errors.push(`${optionAt}.value duplicates '${option.value}'`);\\n                else\\n                    optionValues.add(option.value);\\n                if (!option.label.trim())\\n                    errors.push(`${optionAt}.label is required`);\\n                if (option.disabled === true && !(option.reason?.trim())) {\\n                    errors.push(`${optionAt} is disabled without a player-readable reason`);\\n                }\\n            }\\n        }\\n    }\\n    return errors;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/action-surface.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"validateActionSurfaceSnapshot\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function validateCameraControl(control: HelixCameraControl): string | null {\\n    if (!isRecord(control))\\n        return 'camera.control expects a control patch object';\\n    const present = Object.keys(control).filter((key) => (control as Record<string, unknown>)[key] !== undefined);\\n    if (present.length === 0)\\n        return 'camera.control requires at least one field to change';\\n    const known: Record<keyof HelixCameraControl, true> = {\\n        session: true,\\n        media: true,\\n        spatial: true,\\n        controlTarget: true,\\n        zoom: true,\\n        filter: true,\\n        timerSeconds: true,\\n        aim: true,\\n        focusPoint: true,\\n        exposureBias: true,\\n        shutter: true,\\n        recording: true,\\n        worldAudio: true,\\n    };\\n    const unknown = present.filter((key) => !Object.prototype.hasOwnProperty.call(known, key));\\n    if (unknown.length > 0) {\\n        return `camera.control does not accept ${unknown.sort().join(', ')}`;\\n    }\\n    if (control.session !== undefined && !isCameraSessionState(control.session)) {\\n        return 'camera.control session is outside the shared vocabulary';\\n    }\\n    if (control.media !== undefined && !isCameraMediaMode(control.media)) {\\n        return 'camera.control media is outside the shared vocabulary';\\n    }\\n    if (control.spatial !== undefined && !isCameraSpatialMode(control.spatial)) {\\n        return 'camera.control spatial is outside the shared vocabulary';\\n    }\\n    if (control.controlTarget !== undefined && !isCameraControlTarget(control.controlTarget)) {\\n        return 'camera.control controlTarget is outside the shared vocabulary';\\n    }\\n    if (control.filter !== undefined && !isCameraFilterId(control.filter)) {\\n        return 'camera.control filter is outside the shared vocabulary';\\n    }\\n    if (control.timerSeconds !== undefined && !isCameraTimerSeconds(control.timerSeconds)) {\\n        return 'camera.control timerSeconds must be 0, 3 or 10';\\n    }\\n    if (control.zoom !== undefined &&\\n        (!finite(control.zoom) || control.zoom < CAMERA_MIN_ZOOM || control.zoom > CAMERA_MAX_ZOOM)) {\\n        return `camera.control zoom must "
    "be between ${CAMERA_MIN_ZOOM} and ${CAMERA_MAX_ZOOM}`;\\n    }\\n    if (control.aim !== undefined && !normalizeAim(control.aim)) {\\n        return 'camera.control aim needs finite yaw and pitch';\\n    }\\n    if (control.focusPoint !== undefined && !normalizeFocusPoint(control.focusPoint)) {\\n        return 'camera.control focusPoint must be inside the 0..1 viewport';\\n    }\\n    if (control.exposureBias !== undefined && !finite(control.exposureBias)) {\\n        return 'camera.control exposureBias must be a finite number of stops';\\n    }\\n    for (const flag of ['shutter', 'recording', 'worldAudio'] as const) {\\n        if (control[flag] !== undefined && typeof control[flag] !== 'boolean') {\\n            return `camera.control ${flag} must be a boolean`;\\n        }\\n    }\\n    return null;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/camera.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"validateCameraControl\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function validateInputMap(input: InputMap, suppression: Suppression = {}): string[] {\\n    const errors: string[] = [];\\n    const enabledActions = new Map<StandardModeAction, string>();\\n    const surfaceContinuous: string[] = [];\\n    for (const [verb, typedBinding] of Object.entries(input)) {\\n        const binding = typedBinding as unknown as Record<string, unknown>;\\n        for (const field of RAW_BINDING_FIELDS) {\\n            if (Object.prototype.hasOwnProperty.call(binding, field)) {\\n                errors.push(`verb '${verb}' declares raw device field '${field}'`);\\n            }\\n        }\\n        const action = binding.action;\\n        if (typeof action !== 'string' || !ACTIONS.has(action as StandardModeAction)) {\\n            errors.push(`verb '${verb}' has unsupported action '${String(action)}'`);\\n        }\\n        if (typeof binding.label !== 'string' || binding.label.trim() === '') {\\n            errors.push(`verb '${verb}' has no label, so touch and hints cannot render it`);\\n        }\\n        const touch = binding.touch as Record<string, unknown> | null | undefined;\\n        if (!touch || typeof touch !== 'object') {\\n            errors.push(`verb '${verb}' has no touch presentation`);\\n        }\\n        else {\\n            if (typeof touch.kind !== 'string' || !TOUCH_KINDS.has(touch.kind as TouchPresentationKind)) {\\n                errors.push(`verb '${verb}' has unsupported touch kind '${String(touch.kind)}'`);\\n            }\\n            if (typeof touch.zone !== 'string' || !TOUCH_ZONES.has(touch.zone as TouchPresentationZone)) {\\n                errors.push(`verb '${verb}' has unsupported touch zone '${String(touch.zone)}'`);\\n            }\\n            if (binding.continuous === true && touch.kind !== 'none' && touch.zone === 'surface') {\\n                surfaceContinuous.push(verb);\\n            }\\n            if ((action === 'move' || action === 'look') && !['drag', 'stick', 'none'].includes(String(touch.kind))) {\\n                errors.push(`verb '${verb}' maps vector action '${action}' to non-vector touch kind '${String(touch.kind)}'`);\\n            }\\n        }\\n        if (binding.disabled === true &&\\n            (typeof binding.disabledReason !== 'string' || binding.disabledReason.trim() === '')) {\\n            errors.push(`verb '${verb}' is disabled without disabledReason`);\\n        }\\n        if (binding.repeatMs !== undefined &&\\n            (typeof binding.repeatMs !== 'number' || !Number.isFinite(binding.repeatMs) || binding.repeatMs <= 0)) {\\n            errors.push(`verb '${verb}' has invalid repeatMs`);\\n        }\\n        if (ACTIONS.has(action as StandardModeAction) && binding.disabled !== true) {\\n            const standardAction = action as StandardModeAction;\\n            const prior = enabledActions.get(standardAction);\\n            if (prior) {\\n                errors.push(`verbs '${prior}' and '${verb}' both map enabled action '${standardAction}'`);\\n            }\\n           "
    " else if (!prior) {\\n                enabledActions.set(standardAction, verb);\\n            }\\n        }\\n    }\\n    if (surfaceContinuous.length > 1) {\\n        errors.push(`verbs [${surfaceContinuous.join(', ')}] are continuous and claim the whole touch surface; ` +\\n            'at most one may');\\n    }\\n    if ((suppression.locomotion || suppression.cameraControl) && !enabledActions.has('cancel')) {\\n        errors.push('a mode suppressing locomotion or cameraControl requires an enabled cancel action');\\n    }\\n    return errors;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"validateInputMap\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function validFinalRestScope(scope: unknown): scope is FinalRestProvenance | undefined {\\n    if (scope === undefined)\\n        return true;\\n    if (!scope || typeof scope !== 'object')\\n        return false;\\n    const s = scope as FinalRestProvenance;\\n    return finalRestId(s.moduleId) && finalRestSequence(s.generation) &&\\n        (s.engagementEpoch === undefined || finalRestSequence(s.engagementEpoch));\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/multiplayer-contract/final-rest.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"validFinalRestScope\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VarsView {\\n    num(name: string, fallback?: number): number;\\n    str(name: string, fallback?: string): string;\\n    bool(name: string, fallback?: boolean): boolean;\\n    vec3(name: string): Vec3 | null;\\n    list<T = unknown>(name: string): T[];\\n    raw(name: string): unknown;\\n    has(name: string): boolean;\\n    names(): string[];\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-accessors.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VarsView\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const VAULT_ASSET_KINDS = [\\n    'prop',\\n    'character',\\n    'animation',\\n    'audio',\\n    'texture',\\n    'material',\\n    'environment',\\n    'terrain',\\n    'vfx',\\n    'decal',\\n    'sky',\\n    'gaussian_splat',\\n    'scene',\\n    'unreal_package',\\n] as const;\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"VAULT_ASSET_KINDS\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultAnimationMetadata = VaultMetadataBase & {\\n    animation: {\\n        clipCount: number;\\n        clips: string[];\\n        durationSeconds: number | null;\\n        frameCount: number | null;\\n        framesPerSecond: number | null;\\n        rig: string;\\n        loop: boolean;\\n        rootMotion: boolean;\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultAnimationMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class VaultApiError extends Error {\\n    constructor(readonly status: number, readonly url: string, readonly responseBody: string) {\\n        super(`HELIX Vault request failed (${status})${responseBody ? `: ${responseBody}` : ''}`);\\n        this.name = 'VaultApiError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"VaultApiError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultArtifactMetadata = {\\n    format: string;\\n    mim"
    "eType: string;\\n    sourceBytes: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultArtifactMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultArtifactReference = {\\n    role: 'primary' | string;\\n    url: string | null;\\n    mimeType: string;\\n    sizeBytes: number;\\n    checksumSha256: string | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultArtifactReference\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class VaultArtifactUnavailableError extends Error {\\n    constructor(readonly handle: VaultAssetHandle) {\\n        super(`HELIX Vault asset ${handle.assetId} version ${handle.version} has no servable artifact.`);\\n        this.name = 'VaultArtifactUnavailableError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"VaultArtifactUnavailableError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultAssetDetail<K extends VaultAssetKind = VaultAssetKind> = VaultAssetSummary<K> & {\\n    artifact: VaultResolvedArtifact;\\n    usedInWorlds: Array<{\\n        worldId: string;\\n        slug: string;\\n        title: string;\\n    }>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultAssetDetail\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultAssetHandle = {\\n    assetId: string;\\n    version: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultAssetHandle\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultAssetKind = (typeof VAULT_ASSET_KINDS)[number];\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultAssetKind\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultAssetSummary<K extends VaultAssetKind = VaultAssetKind> = {\\n    assetId: string;\\n    slug: string;\\n    title: string;\\n    description: string | null;\\n    kind: K;\\n    license: 'helix_standard' | 'cc0' | 'cc_by' | 'all_rights_reserved';\\n    compatibility: VaultCompatibility;\\n    metadata: VaultMetadataByKind[K];\\n    tags: string[];\\n    source: 'manual' | 'dreamer' | 'world_generation' | 'import';\\n    origin: 'generated' | 'uploaded';\\n    visibility: 'public' | 'private' | 'held';\\n    currentVersion: number;\\n    thumbnailUrl: string | null;\\n    thumbnailGenerator: string | null;\\n    canonicalThumbnail: VaultCanonicalThumbnail | null;\\n    artifactUrl: string | null;\\n    artifactMimeType: string | null;\\n    artifactSizeBytes: number | null;\\n    contentRating: string;\\n    contentRatingStatus: string | null;\\n    worldUsageCount: number;\\n    usageCount: number;\\n    lastUsedAt: string | null;\\n    creatorId: string;\\n    createdAt: string;\\n    updatedAt: string;\\n    selectionExplanation?: VaultSelectionExplanation | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultAssetSummary\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultAssetVersion = {\\n    handle: VaultA"
    "ssetHandle;\\n    url: string | null;\\n    mimeType: string;\\n    sizeBytes: number;\\n    checksumSha256: string | null;\\n    notes: string | null;\\n    createdAt: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultAssetVersion\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultAudioGenerationMode = 'sound_effect' | 'music' | 'text_to_speech';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultAudioGenerationMode\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultAudioMetadata = VaultMetadataBase & {\\n    audio: {\\n        format: string;\\n        durationSeconds: number | null;\\n        loop: boolean;\\n        mode?: VaultAudioGenerationMode;\\n        model?: string;\\n        outputFormat?: string;\\n        voiceId?: string;\\n        measuredUsage?: {\\n            creditsCharged: number;\\n            measured: boolean;\\n            providerCostUsd: number;\\n        };\\n        [key: string]: unknown;\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultAudioMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultCanonicalThumbnail = {\\n    provenance?: string;\\n    rendererVersion?: string;\\n    artifactChecksumSha256?: string;\\n    [key: string]: unknown;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultCanonicalThumbnail\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class VaultCapabilityUnavailableError extends Error {\\n    constructor(readonly capability: 'fetch' | 'sha256') {\\n        super(`HELIX Vault requires ${capability === 'fetch' ? 'Fetch API support' : 'Web Crypto SHA-256 support or an injected sha256 function'} in this runtime.`);\\n        this.name = 'VaultCapabilityUnavailableError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"VaultCapabilityUnavailableError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultCharacterMetadata = VaultMetadataBase & {\\n    character: {\\n        skinned: boolean;\\n        meshCount: number;\\n        triangleCount: number | null;\\n        boneCount: number;\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultCharacterMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class VaultChecksumMismatchError extends Error {\\n    constructor(readonly expected: string, readonly actual: string) {\\n        super(`HELIX Vault artifact checksum mismatch: expected ${expected}, got ${actual}.`);\\n        this.name = 'VaultChecksumMismatchError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"VaultChecksumMismatchError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultClient = {\\n    search(query?: VaultSearchQuery): Promise<VaultSearchResult>;\\n    get<K extends VaultAssetKind = VaultAssetKind>(assetId: string): Promise<VaultAssetDetail<K>>;\\n    versions(assetId: string): Promise<VaultAssetVersion["
    "]>;\\n    resolve<K extends VaultAssetKind = VaultAssetKind>(handleOrAssetId: VaultAssetHandle | string): Promise<VaultResolvedAsset<K>>;\\n    createLoadPlan(resolved: VaultResolvedAsset): VaultLoadPlan;\\n    download(handleOrAssetId: VaultAssetHandle | string, options?: Pick<VaultInstallOptions, 'verifyChecksum'>): Promise<VaultDownloadedArtifact>;\\n    downloadArtifact(reference: VaultArtifactReference, options?: Pick<VaultInstallOptions, 'verifyChecksum'>): Promise<VaultDownloadedArtifact>;\\n    install(handleOrAssetId: VaultAssetHandle | string, options?: VaultInstallOptions): Promise<VaultInstallResult>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultClient\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultClientOptions = {\\n    apiBaseUrl: string;\\n    fetch?: typeof fetch;\\n    accessToken?: string | null | (() => string | null | Promise<string | null>);\\n    sha256?: (bytes: ArrayBuffer) => Promise<string>;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultClientOptions\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultCompatibility = {\\n    skeleton?: string;\\n    skeletonVerification?: 'verified' | 'declared' | string;\\n    skeletonBonesMatched?: number;\\n    system?: string;\\n    engines?: VaultRuntime[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultCompatibility\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultDecalMetadata = VaultMetadataBase & {\\n    decal: {\\n        projection: 'planar' | 'box';\\n        widthMeters: number;\\n        heightMeters: number;\\n        blendMode: 'normal' | 'multiply' | 'additive';\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultDecalMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultDownloadedArtifact = {\\n    reference: VaultArtifactReference;\\n    bytes: ArrayBuffer;\\n    checksumVerified: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultDownloadedArtifact\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultEnvironmentMetadata = VaultMetadataBase & {\\n    environment: {\\n        representation: 'mesh' | 'gaussian-splat';\\n        scope?: 'environment';\\n        meshCount?: number;\\n        triangleCount?: number;\\n        dimensionsMeters?: [number, number, number] | null;\\n        materialCount?: number;\\n    };\\n    gaussianSplat?: VaultGaussianSplatMetadata['gaussianSplat'];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultEnvironmentMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultGaussianSplatMetadata = VaultMetadataBase & {\\n    gaussianSplat: {\\n        format: 'spz';\\n        scope: VaultSplatScope;\\n        pointCount: number | null;\\n        boundsMeters: [number, number, number] | null;\\n        pointDensityPerCubicMeter: number | null;\\n        sphericalHarmonicsDegree: number | null;\\n        quality: 'mobile' | 'balanced' | 'high' | 'cinematic' | 'unverified';\\n        lodCount: number;\\n        compression: {\\n            format: 'spz';\\n      "
    "      level: unknown;\\n        };\\n        capture: {\\n            provider: unknown;\\n            source: unknown;\\n            metersPerUnit: number;\\n            upAxis: 'x' | 'y' | 'z';\\n        };\\n        performance: {\\n            downloadBytes: number;\\n            memoryBytes: number | null;\\n        };\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultGaussianSplatMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultImmutableArtifactReference = VaultAssetHandle & {\\n    checksumSha256: string;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultImmutableArtifactReference\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultInstallOptions = {\\n    relatedRoles?: string[];\\n    verifyChecksum?: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultInstallOptions\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultInstallResult = {\\n    asset: VaultResolvedAsset;\\n    plan: VaultLoadPlan;\\n    primary: VaultDownloadedArtifact;\\n    related: VaultDownloadedArtifact[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultInstallResult\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultLoadPlan = {\\n    loader: 'gltf';\\n    purpose: 'prop' | 'character' | 'animation' | 'environment' | 'terrain';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'image';\\n    purpose: 'texture' | 'decal';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'audio';\\n    purpose: 'audio';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'hdr-environment';\\n    purpose: 'sky';\\n    format: 'hdr' | 'exr';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'gaussian-splat';\\n    purpose: 'gaussian_splat' | 'environment';\\n    format: 'spz';\\n    scope: VaultSplatScope;\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n} | {\\n    loader: 'helix-descriptor';\\n    purpose: 'material' | 'scene' | 'terrain' | 'vfx' | 'sky';\\n    schema: 'helix-material@1' | 'helix-scene@1' | 'helix-terrain@1' | 'helix-vfx@1' | 'helix-sky@1';\\n    handle: VaultAssetHandle;\\n    primary: VaultArtifactReference;\\n    related: VaultArtifactReference[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultLoadPlan\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultMaterialMetadata = VaultMetadataBase & {\\n    material: {\\n        schemaVersion: string;\\n        materialId: string;\\n        materialType: 'pbr' | 'procedural_glass' | 'procedural_water';\\n        mapSemantics: string[];\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultMaterialMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultMetadataByKind ="
    " {\\n    prop: VaultPropMetadata;\\n    character: VaultCharacterMetadata;\\n    animation: VaultAnimationMetadata;\\n    audio: VaultAudioMetadata;\\n    texture: VaultTextureMetadata;\\n    material: VaultMaterialMetadata;\\n    environment: VaultEnvironmentMetadata;\\n    terrain: VaultTerrainMetadata;\\n    vfx: VaultVfxMetadata;\\n    decal: VaultDecalMetadata;\\n    sky: VaultSkyMetadata;\\n    gaussian_splat: VaultGaussianSplatMetadata;\\n    scene: VaultSceneMetadata;\\n    unreal_package: VaultUnrealPackageMetadata;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultMetadataByKind\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultPerformanceMetadata = {\\n    costScore: number | null;\\n    tier: VaultPerformanceTier;\\n    downloadBytes: number;\\n    qualityScore: number | null;\\n    rankingSignals: string[];\\n    triangles?: number;\\n    drawCalls?: number;\\n    maxTextureEdge?: number;\\n    memoryBytes?: number | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultPerformanceMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultPerformanceTier = 'mobile' | 'desktop' | 'cinematic' | 'unknown';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultPerformanceTier\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultPropMetadata = VaultMetadataBase & {\\n    prop: {\\n        static: true;\\n        coordinateSystem: string;\\n        units: 'meters' | string;\\n        dimensionsMeters: [number, number, number];\\n        triangleCount: number;\\n        materialCount: number;\\n        maxTextureEdge: number;\\n        fileSizeBytes: number;\\n        lods: Array<{\\n            level: number;\\n            triangles: number;\\n            format: string;\\n        }>;\\n        limits: {\\n            maxFileBytes: number;\\n            maxTextureEdge: number;\\n            generated: boolean;\\n            [key: string]: unknown;\\n        };\\n        [key: string]: unknown;\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultPropMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultRankMode = 'relevance' | 'performance' | 'reuse';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultRankMode\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultRelatedArtifact = {\\n    role: string;\\n    url: string | null;\\n    mimeType: string;\\n    sizeBytes: number;\\n    checksumSha256: string | null;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultRelatedArtifact\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultResolvedArtifact = {\\n    assetId: string;\\n    version: number;\\n    url: string | null;\\n    urlKind: 'cdn' | 'unavailable';\\n    mimeType: string;\\n    sizeBytes: number;\\n    checksumSha256: string | null;\\n    relatedArtifacts: VaultRelatedArtifact[];\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultResolvedArtifact\"\n      },\n      {\n        \"category\": \"standalone_to"
    "oling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultResolvedAsset<K extends VaultAssetKind = VaultAssetKind> = {\\n    handle: VaultAssetHandle;\\n    asset: VaultAssetDetail<K>;\\n    artifact: VaultResolvedArtifact;\\n    relatedArtifactsComplete: boolean;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultResolvedAsset\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultRuntime = 'web' | 'unreal';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultRuntime\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultSceneMetadata = VaultMetadataBase & {\\n    scene: {\\n        schemaVersion: string;\\n        nodeCount: number;\\n        references: Array<VaultImmutableArtifactReference & {\\n            kind: 'prop' | 'character' | 'environment' | 'scene' | 'terrain' | 'vfx';\\n        }>;\\n        runtimeBundles: Array<{\\n            runtime: VaultRuntime;\\n            format: string;\\n            artifact: VaultImmutableArtifactReference;\\n        }>;\\n        budget: {\\n            deviceTier: 'mobile' | 'desktop' | 'cinematic';\\n            derivedTotals: {\\n                uniqueMaterials: number;\\n                drawCalls: number;\\n                decodedTextureMemoryBytes: number;\\n                triangles: number;\\n                particles: number;\\n            };\\n            basis: 'server-resolved-immutable-artifacts';\\n            limits: {\\n                uniqueMaterials: number;\\n                drawCalls: number;\\n                decodedTextureMemoryBytes: number;\\n                triangles: number;\\n                particles: number;\\n            };\\n            costScore: number;\\n            withinBudget: true;\\n        };\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultSceneMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultSearchQuery = {\\n    q?: string;\\n    kind?: VaultAssetKind | VaultAssetKind[];\\n    subtype?: string;\\n    scope?: VaultSplatScope;\\n    format?: string;\\n    performanceTier?: VaultPerformanceTier;\\n    skeleton?: 'humanoid' | 'quadruped';\\n    engine?: VaultRuntime;\\n    license?: VaultAssetSummary['license'];\\n    source?: VaultAssetSummary['source'];\\n    origin?: VaultAssetSummary['origin'];\\n    creatorId?: string;\\n    rank?: VaultRankMode;\\n    page?: number;\\n    limit?: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultSearchQuery\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultSearchResult = {\\n    items: VaultAssetSummary[];\\n    totalItems: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultSearchResult\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultSelectionExplanation = {\\n    rankMode: VaultRankMode;\\n    lexical: {\\n        matchedTerms: string[];\\n        matchedFields: string[];\\n    };\\n    hardFilters: Record<string, unknown>;\\n    performance: {\\n        tier: VaultPerformanceTier | null;\\n        costScore: number | null;\\n        qualityScore: number | null;\\n    };\\n    reuse: {\\n        worldUsageCount: number;\\n        usageCount: number;\\n        lastUsedAt: string | null;\\n    };\\n    availability: {\\n        performanceMe"
    "asured: boolean;\\n        qualityMeasured: boolean;\\n        reuseObserved: boolean;\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultSelectionExplanation\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultSkyMetadata = VaultMetadataBase & {\\n    sky: {\\n        schemaVersion: string;\\n        sourceFormat: 'hdr' | 'exr';\\n        projection: 'equirectangular' | 'cubemap';\\n        colorSpace: 'linear-srgb' | 'acescg';\\n        dynamicRangeStops: number;\\n        exposureEv: number;\\n        resolution: {\\n            width: number;\\n            height: number;\\n        };\\n        backdropRenditions: unknown[];\\n        lightingRenditions: unknown[];\\n        channelsSeparated: true;\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultSkyMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultSplatScope = 'object' | 'environment';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultSplatScope\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultTerrainMetadata = VaultMetadataBase & {\\n    terrain: {\\n        representation: 'heightmap' | 'mesh';\\n        sourceFormat?: 'png16' | 'raw16' | 'exr' | 'glb';\\n        dimensionsMeters: [number, number, number] | null;\\n        triangleCount?: number | null;\\n        schemaVersion?: string;\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultTerrainMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultTextureMetadata = VaultMetadataBase & {\\n    texture: {\\n        semantic: 'albedo' | 'normal' | 'roughness' | 'metallic' | 'ambient-occlusion' | 'emissive' | 'height' | 'mask' | 'unspecified';\\n        colorSpace: 'srgb' | 'linear' | 'unspecified';\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultTextureMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultUnrealPackageMetadata = VaultMetadataBase;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultUnrealPackageMetadata\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class VaultUnsupportedRuntimeError extends Error {\\n    constructor(readonly kind: VaultAssetKind, readonly mimeType: string, reason: string) {\\n        super(`HELIX Vault asset cannot be loaded by the web SDK (${kind}, ${mimeType}): ${reason}`);\\n        this.name = 'VaultUnsupportedRuntimeError';\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"VaultUnsupportedRuntimeError\"\n      },\n      {\n        \"category\": \"standalone_tooling\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VaultVfxMetadata = VaultMetadataBase & {\\n    vfx: {\\n        schemaVersion: string;\\n        deviceTier: 'mobile' | 'desktop' | 'cinematic';\\n        effectType: 'particle' | 'beam' | 'trail' | 'flipbook';\\n        boundsMeters: [number, number, number];\\n        portability: 'renderer-neutral-contract-draft';\\n        runtimeCompatibility: VaultRuntime[];\\"
    "n        loop: boolean;\\n        maxParticles: number;\\n        drawCalls: number;\\n        decodedTextureMemoryBytes: number;\\n        limits: {\\n            maxParticles: number;\\n            spawnRatePerSecond: number;\\n            lifetimeSeconds: number;\\n            speedMetersPerSecond: number;\\n            sizeMeters: number;\\n            boundsMeters: number;\\n            beamLengthMeters: number;\\n            beamSegments: number;\\n            trailPoints: number;\\n        };\\n        textures: Array<{\\n            role: 'sprite' | 'flipbook' | 'beam' | 'trail' | 'distortion';\\n            artifact: VaultImmutableArtifactReference;\\n            resolvedKind: 'texture' | 'decal';\\n            colorSpace: 'srgb' | 'linear';\\n            frames: {\\n                columns: number;\\n                rows: number;\\n                frameCount: number;\\n                framesPerSecond: number;\\n            } | null;\\n        }>;\\n        particle: {\\n            textureRole: string;\\n            shape: 'point' | 'sphere' | 'box' | 'cone';\\n            spawnRatePerSecond: number;\\n            lifetimeSeconds: [number, number];\\n            speedMetersPerSecond: [number, number];\\n            sizeMeters: [number, number];\\n            blendMode: 'alpha' | 'additive' | 'multiply';\\n            billboard: 'camera' | 'velocity' | 'world';\\n        } | null;\\n        beam: {\\n            textureRole: string;\\n            widthMeters: [number, number];\\n            lengthMeters: [number, number];\\n            maxSegments: number;\\n            noiseAmplitudeMeters: number;\\n            blendMode: 'alpha' | 'additive' | 'multiply';\\n        } | null;\\n        trail: {\\n            textureRole: string;\\n            lifetimeSeconds: number;\\n            widthMeters: [number, number];\\n            maxPoints: number;\\n            minVertexDistanceMeters: number;\\n            blendMode: 'alpha' | 'additive' | 'multiply';\\n        } | null;\\n        flipbook: {\\n            textureRole: string;\\n            sizeMeters: [number, number];\\n            blendMode: 'alpha' | 'additive' | 'multiply';\\n        } | null;\\n    };\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/vault.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VaultVfxMetadata\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type Vec3 = {\\n    x: number;\\n    y: number;\\n    z: number;\\n};\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/multiplayer-contract/state.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"Vec3\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleActionEnvelope {\\n    entityId: string;\\n    authorityEpoch: number;\\n    seq: number;\\n    buildDigest: string;\\n    targetBits?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleActionEnvelope\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleActionFencesMessage {\\n    entries: Array<{\\n        entityId: string;\\n        authorityEpoch: number;\\n        seq: number;\\n    }>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleActionFencesMessage\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleComponentActionRequest {\\n    identity: ModuleIdentity;\\n    entityId: string;\\n    action: string;\\n    args?: Record<string, string | number | boolean>;\\n    targetBits?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehi"
    "cles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleComponentActionRequest\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleDetachActionDescriptor {\\n    partId: 'hood';\\n    stateBit: number;\\n    localTransform: {\\n        position: [number, number, number];\\n        rotation: [number, number, number, number];\\n    };\\n    collider: {\\n        shape: 'box';\\n        halfExtents: [number, number, number];\\n    };\\n    massKg: number;\\n    allowedRoles: VehicleRole[];\\n    settleAfterMs: number;\\n    despawnAfterMs: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleDetachActionDescriptor\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleDetachActionRequest {\\n    identity: ModuleIdentity;\\n    entityId: string;\\n    actionId: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleDetachActionRequest\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleDetachActions {\\n    version: 1;\\n    actions: Record<string, VehicleDetachActionDescriptor>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleDetachActions\"\n      },\n      {\n        \"category\": \"multiplayer_handle_type\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleEntityRetiredMessage {\\n    entityId: string;\\n    authorityEpoch: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/multiplayer-contract/messages.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleEntityRetiredMessage\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehiclePackageArtifact {\\n    format: 1;\\n    revision: number;\\n    checksumSha256: string;\\n    package: Record<string, unknown>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehiclePackageArtifact\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VehicleRole = 'owner' | 'driver' | 'occupant' | 'nearby';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleRole\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleSpecialtyComponentInvocation {\\n    action: string;\\n    targetBits?: number;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/vehicle-specialty-transport.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleSpecialtyComponentInvocation\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleSpecialtyDetachInvocation {\\n    actionId: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/vehicle-specialty-transport.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleSpecialtyDetachInvocation\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function vehicleSpecialtyEntityId(placementId: string): string {\\n    if (!UUID.test(placementId))\\n        throw new"
    " Error('vehicle specialty placementId is invalid');\\n    return `uv.${placementId.replace(/-/g, '').slice(0, 24).toLowerCase()}`;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/vehicle-specialty-placement.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"vehicleSpecialtyEntityId\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleSpecialtyInvocation {\\n    functionName: string;\\n    args: Readonly<Record<string, unknown>>;\\n    itemInstanceId?: string;\\n    moduleId?: string;\\n    bundleChecksumSha256?: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/vehicle-specialty-transport.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleSpecialtyInvocation\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function vehicleSpecialtyPlacementBinding(identity: VehicleSpecialtyPlacementIdentity): VehicleSpecialtyPlacementBinding & {\\n    detachActions: VehicleDetachActions | null;\\n} {\\n    if (!identity.itemInstanceId.trim())\\n        throw new Error('vehicle specialty itemInstanceId is required');\\n    if (!SHA256.test(identity.bundleChecksumSha256))\\n        throw new Error('vehicle specialty bundle checksum is invalid');\\n    if (!Number.isSafeInteger(identity.revision) || identity.revision < 1)\\n        throw new Error('vehicle specialty revision is invalid');\\n    if (identity.stateVars.some((name) => !/^[A-Za-z][A-Za-z0-9_]{0,63}$/.test(name))) {\\n        throw new Error('vehicle specialty stateVars contains an invalid name');\\n    }\\n    return {\\n        placementId: identity.placementId,\\n        itemInstanceId: identity.itemInstanceId,\\n        moduleId: vehicleSpecialtyRuntimeModuleId(identity.bundleId, identity.placementId),\\n        entityId: vehicleSpecialtyEntityId(identity.placementId),\\n        bundleChecksumSha256: identity.bundleChecksumSha256,\\n        revision: identity.revision,\\n        stateVars: [...identity.stateVars],\\n        detachActions: detachActions(identity.detachActions),\\n    };\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/vehicle-specialty-placement.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"vehicleSpecialtyPlacementBinding\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleSpecialtyPlacementBinding extends VehicleSpecialtyRoomBinding {\\n    placementId: string;\\n    entityId: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/vehicle-specialty-placement.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleSpecialtyPlacementBinding\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleSpecialtyPlacementIdentity {\\n    placementId: string;\\n    itemInstanceId: string;\\n    bundleId: string;\\n    bundleChecksumSha256: string;\\n    revision: number;\\n    stateVars: readonly string[];\\n    detachActions?: VehicleDetachActions | null;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/vehicle-specialty-placement.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleSpecialtyPlacementIdentity\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleSpecialtyPresentationEffect {\\n    moduleId: string;\\n    commandId: string;\\n    index: number;\\n    serverTick: number;\\n    event: string;\\n    payload: Readonly<Record<string, unknown>>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/vehicle-specialty-transport.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleSpecialtyPresentationEffect\"\n      },\n      {\n        \"cate"
    "gory\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleSpecialtyRoomBinding {\\n    itemInstanceId?: string;\\n    moduleId: string;\\n    entityId?: string;\\n    bundleChecksumSha256: string;\\n    revision: number;\\n    stateVars: readonly string[];\\n    detachActions?: VehicleDetachActions | null;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/vehicle-specialty-transport.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleSpecialtyRoomBinding\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class VehicleSpecialtyRoomTransport {\\n    readonly #room: VehicleSpecialtyRoom;\\n    readonly #binding: VehicleSpecialtyRoomBinding;\\n    readonly #detachActionIds: readonly string[];\\n    readonly #stateSubscribers = new Set<StateSubscriber>();\\n    readonly #effectSubscribers = new Set<EffectSubscriber>();\\n    readonly #seenEffects = new Set<string>();\\n    readonly #roomUnsubscribers: Array<() => void> = [];\\n    #revision = 0;\\n    #fingerprint = '';\\n    #latest: VehicleSpecialtyStateSnapshot | null = null;\\n    #disposed = false;\\n    constructor(room: VehicleSpecialtyRoom, binding: VehicleSpecialtyRoomBinding) {\\n        this.#room = room;\\n        this.#binding = {\\n            ...binding,\\n            stateVars: [...binding.stateVars],\\n            detachActions: binding.detachActions,\\n        };\\n        this.#detachActionIds = Object.freeze(Object.keys(binding.detachActions?.actions ?? {}));\\n        this.#capture();\\n        const stateUnsubscribe = room.onStateChange(() => {\\n            if (!this.#disposed)\\n                this.#capture();\\n        });\\n        const effectUnsubscribe = room.onMessage('moduleEffect', (value) => {\\n            if (!this.#disposed)\\n                this.#effect(value);\\n        });\\n        if (typeof stateUnsubscribe === 'function')\\n            this.#roomUnsubscribers.push(stateUnsubscribe);\\n        if (typeof effectUnsubscribe === 'function')\\n            this.#roomUnsubscribers.push(effectUnsubscribe);\\n    }\\n    invoke(invocation: VehicleSpecialtyInvocation): void {\\n        if (this.#disposed)\\n            throw new Error('Vehicle specialty transport is disposed');\\n        const args: Record<string, string | number | boolean> = {};\\n        for (const [name, value] of Object.entries(invocation.args)) {\\n            if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')\\n                args[name] = value;\\n        }\\n        this.#room.sendModuleAction({\\n            identity: {\\n                ...(this.#binding.itemInstanceId ? { itemInstanceId: this.#binding.itemInstanceId } : {}),\\n                moduleId: this.#binding.moduleId,\\n                bundleChecksumSha256: this.#binding.bundleChecksumSha256,\\n                revision: this.#binding.revision,\\n            },\\n            action: invocation.functionName,\\n            args,\\n        });\\n    }\\n    detachActionIds(): readonly string[] {\\n        return [...this.#detachActionIds];\\n    }\\n    invokeDetach(invocation: VehicleSpecialtyDetachInvocation): boolean {\\n        if (this.#disposed)\\n            throw new Error('Vehicle specialty transport is disposed');\\n        if (!this.#binding.entityId || !this.#detachActionIds.includes(invocation.actionId) ||\\n            typeof this.#room.sendVehicleDetachAction !== 'function')\\n            return false;\\n        return this.#room.sendVehicleDetachAction({\\n            identity: {\\n                ...(this.#binding.itemInstanceId ? { itemInstanceId: this.#binding.itemInstanceId } : {}),\\n                moduleId: this.#binding.moduleId,\\n                bundleChecksumSha256: this.#binding.bundleChecksumSha256,\\n                revision: this.#binding.revision,\\n            },\\n            entityId: this.#binding.entityId,\\n            actionId: invocation.actionId,\\n        });\\n    }\\n    invokeComponent(invocation: VehicleSpecial"
    "tyComponentInvocation): boolean {\\n        if (this.#disposed ||\\n            !this.#binding.entityId ||\\n            typeof this.#room.sendVehicleComponentAction !== 'function' ||\\n            !VEHICLE_COMPONENT_ACTION.test(invocation.action) ||\\n            (invocation.targetBits !== undefined && (!Number.isSafeInteger(invocation.targetBits) ||\\n                invocation.targetBits < 0 ||\\n                invocation.targetBits > 0xffff)))\\n            return false;\\n        return this.#room.sendVehicleComponentAction({\\n            identity: {\\n                ...(this.#binding.itemInstanceId ? { itemInstanceId: this.#binding.itemInstanceId } : {}),\\n                moduleId: this.#binding.moduleId,\\n                bundleChecksumSha256: this.#binding.bundleChecksumSha256,\\n                revision: this.#binding.revision,\\n            },\\n            entityId: this.#binding.entityId,\\n            action: invocation.action,\\n            ...(invocation.targetBits === undefined ? {} : { targetBits: invocation.targetBits }),\\n        });\\n    }\\n    subscribeState(subscriber: StateSubscriber): () => void {\\n        if (this.#disposed)\\n            return () => undefined;\\n        this.#stateSubscribers.add(subscriber);\\n        if (this.#latest)\\n            subscriber(this.#latest, { initial: true });\\n        return () => void this.#stateSubscribers.delete(subscriber);\\n    }\\n    subscribeEffect(subscriber: EffectSubscriber): () => void {\\n        if (this.#disposed)\\n            return () => undefined;\\n        this.#effectSubscribers.add(subscriber);\\n        return () => void this.#effectSubscribers.delete(subscriber);\\n    }\\n    snapshot(): VehicleSpecialtyStateSnapshot | null {\\n        return this.#latest ? { ...this.#latest, vars: { ...this.#latest.vars } } : null;\\n    }\\n    dispose(): void {\\n        if (this.#disposed)\\n            return;\\n        this.#disposed = true;\\n        for (const unsubscribe of this.#roomUnsubscribers.splice(0))\\n            unsubscribe();\\n        this.#stateSubscribers.clear();\\n        this.#effectSubscribers.clear();\\n        this.#seenEffects.clear();\\n        this.#latest = null;\\n    }\\n    #capture(): void {\\n        const vars: Record<string, unknown> = {};\\n        const view = this.#room.module(this.#binding.moduleId).vars;\\n        for (const name of this.#binding.stateVars)\\n            vars[name] = view.raw(name);\\n        const fingerprint = JSON.stringify(vars);\\n        if (fingerprint === this.#fingerprint && this.#latest)\\n            return;\\n        this.#fingerprint = fingerprint;\\n        this.#latest = {\\n            ...(this.#binding.itemInstanceId ? { itemInstanceId: this.#binding.itemInstanceId } : {}),\\n            moduleId: this.#binding.moduleId,\\n            bundleChecksumSha256: this.#binding.bundleChecksumSha256,\\n            revision: ++this.#revision,\\n            serverTick: this.#room.state.serverTick,\\n            vars,\\n        };\\n        for (const subscriber of this.#stateSubscribers)\\n            subscriber(this.#latest, { initial: false });\\n    }\\n    #effect(value: unknown): void {\\n        if (!isRecord(value) || value.moduleId !== this.#binding.moduleId)\\n            return;\\n        if (typeof value.commandId !== 'string' || !Number.isSafeInteger(value.index) ||\\n            typeof value.serverTick !== 'number' || typeof value.event !== 'string' || !isRecord(value.payload))\\n            return;\\n        const key = `${value.commandId}:${value.index}`;\\n        if (this.#seenEffects.has(key))\\n            return;\\n        if (this.#seenEffects.size >= MAX_SEEN_EFFECTS) {\\n            const oldest = this.#seenEffects.values().next().value as string | undefined;\\n            if (oldest !== undefined)\\n                this.#seenEffects.delete(oldest);\\n        }\\n        this.#seenEffects.add(key);\\n        const effect = value as unknown as VehicleSpecialtyPresentationEffect;\\n        for (const subscriber of this.#effectSubscribers)\\n            subscriber(effect);\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"so"
    "urce\": \"src/vehicle-specialty-transport.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"VehicleSpecialtyRoomTransport\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function vehicleSpecialtyRuntimeModuleId(bundleId: string, placementId: string): string {\\n    if (!BUNDLE.test(bundleId))\\n        throw new Error('vehicle specialty bundleId is invalid');\\n    if (!UUID.test(placementId))\\n        throw new Error('vehicle specialty placementId is invalid');\\n    const safeSlug = bundleId.replace(/[^a-z0-9-]/g, '').slice(0, 13) || 'item';\\n    return `itx.${safeSlug}.${placementId.replace(/-/g, '').slice(0, 12).toLowerCase()}`;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/vehicle-specialty-placement.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"vehicleSpecialtyRuntimeModuleId\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VehicleSpecialtyStateSnapshot {\\n    itemInstanceId?: string;\\n    moduleId: string;\\n    bundleChecksumSha256: string;\\n    revision: number;\\n    serverTick: number;\\n    vars: Readonly<Record<string, unknown>>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/vehicle-specialty-transport.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VehicleSpecialtyStateSnapshot\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VerbBinding {\\n    action: StandardModeAction;\\n    label: string;\\n    touch: TouchPresentation;\\n    continuous?: boolean;\\n    repeatMs?: number;\\n    disabled?: boolean;\\n    disabledReason?: string;\\n    exclusiveGroup?: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VerbBinding\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface VerbEvent {\\n    phase: VerbPhase;\\n    value?: number;\\n    vector?: {\\n        x: number;\\n        y: number;\\n    };\\n    at?: {\\n        x: number;\\n        y: number;\\n    };\\n    heldMs?: number;\\n    source: 'key' | 'pointer' | 'touch' | 'gamepad' | 'ui' | 'script';\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VerbEvent\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VerbHandler = (event: VerbEvent, verb: string) => void;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VerbHandler\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VerbPhase = 'start' | 'end' | 'repeat';\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VerbPhase\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type VerbSink = (verb: string, event: VerbEvent) => void;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/interaction-mode.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"VerbSink\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export type WorldDeviceDefinitionResolver = (reference: DeviceDefinitionReference) => Promise<DeviceDefinitionV1>;\",\n            \"kind\": \"TypeAliasDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n      "
    "  \"kind\": \"type\",\n        \"name\": \"WorldDeviceDefinitionResolver\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export class WorldDeviceHost {\\n    readonly #presentations = new Map<string, WorldDevicePresentation>();\\n    readonly #unsubscribers: Array<() => void> = [];\\n    #disposed = false;\\n    #serverOffsetMs = 0;\\n    #clockAnchored = false;\\n    constructor(readonly room: Pick<HelixRoom, 'state' | 'module' | 'onStateChange' | 'sendAction'>, readonly adapter: WorldDevicePresentationAdapter, readonly resolveDefinition: WorldDeviceDefinitionResolver) {\\n        this.#sampleClock();\\n    }\\n    now = (): number => Date.now() + this.#serverOffsetMs;\\n    async mount(spawn: WorldDeviceMount): Promise<boolean> {\\n        if (this.#disposed)\\n            throw new Error('World Device host is disposed');\\n        const reference = spawn.deviceDefinition;\\n        if (!reference)\\n            return false;\\n        const definition = await this.resolveDefinition(reference);\\n        if (definition.format !== 'helix.device' ||\\n            definition.formatVersion !== 1 ||\\n            definition.id !== reference.id ||\\n            definition.version !== reference.version) {\\n            throw new Error(`Device definition identity mismatch for ${reference.id}@${reference.version}`);\\n        }\\n        if (definition.compatibility &&\\n            !definition.compatibility.hosts.includes('world')) {\\n            throw new Error(`Device ${definition.id} does not support World hosts`);\\n        }\\n        const requestedCapabilities = new Set([\\n            ...(definition.compatibility?.requiredCapabilities ?? []),\\n            ...(definition.capabilities ?? []),\\n        ]);\\n        for (const capability of requestedCapabilities) {\\n            if (!PLATFORM_DEVICE_CAPABILITIES.has(capability) &&\\n                !this.adapter.capabilities.has(capability)) {\\n                throw new Error(`World Device host is missing capability ${capability}`);\\n            }\\n        }\\n        for (const interaction of definition.interactions) {\\n            const target = interaction.presentation;\\n            if (target === undefined)\\n                continue;\\n            if (!target || target.kind !== 'webPanel' || typeof target.app !== 'string' || !target.app || target.app.length > 64 ||\\n                Object.keys(target).some(key => key !== 'kind' && key !== 'app')) {\\n                throw new Error('Device interaction presentation must name a declared webPanel app');\\n            }\\n            if (!requestedCapabilities.has('app.web.panel'))\\n                throw new Error('Device webPanel requires app.web.panel capability');\\n            const raw = interaction as unknown as Record<string, unknown>;\\n            if (raw.action !== undefined || interaction.control !== undefined || raw.surface === 'internal') {\\n                throw new Error('Device webPanel cannot declare action, control or internal surface');\\n            }\\n            const app = definition.apps?.[target.app];\\n            if (!app || !['localWeb', 'remoteWeb'].includes(app.type) || !app.entry) {\\n                throw new Error('Device webPanel requires a declared localWeb or remoteWeb entry');\\n            }\\n            if (!requestedCapabilities.has(app.type === 'remoteWeb' ? 'app.web.remote' : 'app.web.local')) {\\n                throw new Error('Device webPanel app capability is missing');\\n            }\\n            if (app.type === 'remoteWeb') {\\n                const url = new URL(app.entry);\\n                if (url.protocol !== 'https:' || url.username || url.password || !app.allowedOrigins?.includes(url.origin) ||\\n                    app.allowedOrigins.some(origin => { try {\\n                        const allowed = new URL(origin);\\n                        return allowed.protocol !== 'https:' || allowed.origin !== origin;\\n                    }\\n                    catch {\\n                        return true;\\n                    } })) {\\n                  "
    "  throw new Error('Device webPanel requires a declared HTTPS origin without credentials');\\n                }\\n            }\\n            else {\\n                const path = new URL(app.entry, 'https://device-host.invalid');\\n                if (!app.entry.startsWith('/device-apps/') || app.entry.includes('\\\\\\\\') || app.entry.split(/[/?#]/).includes('..') ||\\n                    !/^\\\\/device-apps\\\\/[A-Za-z0-9][A-Za-z0-9/_.-]*$/.test(path.pathname) || path.origin !== 'https://device-host.invalid' ||\\n                    decodeURIComponent(path.pathname) !== path.pathname || app.allowedOrigins !== undefined) {\\n                    throw new Error('Device webPanel local entry must remain within /device-apps/');\\n                }\\n            }\\n            const graph = definition.graph as {\\n                triggers?: Array<{\\n                    on?: string;\\n                    interaction?: string;\\n                }>;\\n            } | undefined;\\n            if (graph?.triggers?.some(trigger => trigger.on === 'interact' && trigger.interaction === interaction.id)) {\\n                throw new Error('Device webPanel cannot trigger a state graph');\\n            }\\n        }\\n        const moduleId = deviceRuntimeModuleId(definition.id, spawn.placementId);\\n        const presentation = await this.adapter.mount({\\n            spawn,\\n            definition,\\n            now: this.now,\\n            interact: (interactionId, args = {}) => {\\n                if (definition.interactions.find(interaction => interaction.id === interactionId)?.presentation) {\\n                    throw new Error('Device webPanel is viewer-local and cannot be sent as a room action');\\n                }\\n                this.room.sendAction(interactionId, args, moduleId);\\n            },\\n        });\\n        if (this.#disposed) {\\n            await presentation.dispose();\\n            return false;\\n        }\\n        this.#presentations.set(spawn.placementId, presentation);\\n        const sync = () => {\\n            this.#sampleClock();\\n            const vars = this.room.module(moduleId).vars;\\n            presentation.applyState(Object.fromEntries(Object.keys(definition.state).map((name) => [name, vars.raw(name)])));\\n        };\\n        sync();\\n        const unsubscribe = this.room.onStateChange(sync);\\n        if (typeof unsubscribe === 'function')\\n            this.#unsubscribers.push(unsubscribe);\\n        return true;\\n    }\\n    async dispose(): Promise<void> {\\n        if (this.#disposed)\\n            return;\\n        this.#disposed = true;\\n        for (const unsubscribe of this.#unsubscribers.splice(0))\\n            unsubscribe();\\n        for (const presentation of this.#presentations.values()) {\\n            await presentation.dispose();\\n        }\\n        this.#presentations.clear();\\n    }\\n    #sampleClock(): void {\\n        const serverTimeMs = Number(this.room.state.serverTimeMs);\\n        if (Number.isFinite(serverTimeMs) && serverTimeMs > 0) {\\n            const sample = serverTimeMs - Date.now();\\n            if (!this.#clockAnchored) {\\n                this.#serverOffsetMs = sample;\\n                this.#clockAnchored = true;\\n                return;\\n            }\\n            const correction = Math.max(-250, Math.min(250, sample - this.#serverOffsetMs));\\n            this.#serverOffsetMs += correction * 0.2;\\n        }\\n    }\\n}\",\n            \"kind\": \"ClassDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"value_and_type\",\n        \"name\": \"WorldDeviceHost\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface WorldDevicePresentation {\\n    applyState(state: Readonly<Record<string, unknown>>): void;\\n    dispose(): void | Promise<void>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"WorldDevicePresentation\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarat"
    "ions\": [\n          {\n            \"declaration\": \"export interface WorldDevicePresentationAdapter {\\n    readonly capabilities: ReadonlySet<string>;\\n    mount(input: {\\n        spawn: WorldDeviceMount;\\n        definition: DeviceDefinitionV1;\\n        now: () => number;\\n        interact: (interactionId: string, args?: Record<string, RoomVarValue>) => void;\\n    }): WorldDevicePresentation | Promise<WorldDevicePresentation>;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"WorldDevicePresentationAdapter\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export function deviceRuntimeModuleId(definitionId: string, placementId: string): string {\\n    const slug = definitionId.replace(/[^a-z0-9-]/g, '').slice(0, 13) || 'device';\\n    const identity = placementId.replace(/-/g, '').slice(0, 12).toLowerCase();\\n    return `dev.${slug}.${identity}`;\\n}\",\n            \"kind\": \"FunctionDeclaration\",\n            \"source\": \"src/devices.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"worldDeviceRuntimeModuleId\"\n      },\n      {\n        \"category\": \"implementation_symbol\",\n        \"declarations\": [\n          {\n            \"declaration\": \"export interface WorldSpawn {\\n    placementId: string;\\n    instanceId: string;\\n    itemId: string;\\n    worldId: string;\\n    ownerUserId: string;\\n    ownerUsername: string | null;\\n    kind: string;\\n    usage: string;\\n    name: string;\\n    thumbnailUrl: string | null;\\n    modelUrl: string | null;\\n    vehiclePackage: VehiclePackageArtifact | null;\\n    deviceDefinition: {\\n        id: string;\\n        version: string;\\n    } | null;\\n    transform: Record<string, unknown>;\\n    state: Record<string, unknown>;\\n    spawnedAt: string;\\n}\",\n            \"kind\": \"InterfaceDeclaration\",\n            \"source\": \"src/universal-vehicles.ts\"\n          }\n        ],\n        \"kind\": \"type\",\n        \"name\": \"WorldSpawn\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const XR_INTERACTION_PROMPT_EVENT = 'helix:interaction-prompt';\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"XR_INTERACTION_PROMPT_EVENT\"\n      },\n      {\n        \"category\": \"runtime_facade\",\n        \"declarations\": [\n          {\n            \"declaration\": \"const XR_SESSION_EVENT = 'helix:xr-session';\",\n            \"kind\": \"VariableDeclaration\",\n            \"source\": \"src/protocol.ts\"\n          }\n        ],\n        \"kind\": \"value\",\n        \"name\": \"XR_SESSION_EVENT\"\n      }\n    ]\n  },\n  \"purchaseStatusMeanings\": {\n    \"AlreadyOwned\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": true\n    },\n    \"Cancelled\": {\n      \"money\": \"unknown\",\n      \"ownsAfter\": false\n    },\n    \"Claimed\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": true\n    },\n    \"Failed\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": false\n    },\n    \"Granted\": {\n      \"money\": \"charged\",\n      \"ownsAfter\": true\n    },\n    \"InsufficientFunds\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": false\n    },\n    \"MaxPerUserReached\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": false\n    },\n    \"NotFound\": {\n      \"money\": \"unknown\",\n      \"ownsAfter\": false\n    },\n    \"NotInWorld\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": false\n    },\n    \"Pending\": {\n      \"money\": \"unknown\",\n      \"ownsAfter\": false\n    },\n    \"PriceChanged\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": false\n    },\n    \"ProductInactive\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": false\n    },\n    \"ProductNotFound\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": false\n    },\n    \"RateLimited\": {\n      \"money\": \"not_charged\",\n      \"ownsAfter\": false\n    },\n    \"Timeout\": {\n      \"money\": \"unknown\",\n      \"ownsAfter\": false\n    },\n    \"Unauthorized\": {\n      \"money\": \"not_charged\",\n      \"ownsAft"
    "er\": false\n    }\n  },\n  \"schema\": \"helix.runtime-contract\",\n  \"sdk\": {\n    \"multiplayerContractVersion\": 34,\n    \"package\": \"@hypersoniclabs/helix-sdk\",\n    \"packageVersion\": \"0.1.10\",\n    \"protocolVersion\": 2\n  },\n  \"source\": {\n    \"branch\": \"helix3\",\n    \"commit\": \"1fd29444a3f3635d4ccb5e1feaa6b805281879f4\",\n    \"fileDigests\": {\n      \"package.json\": \"sha256:983cb8d1075c4848738fc06caba7e5409ebad39b136302b723820f297ecf8c18\",\n      \"src/action-surface.ts\": \"sha256:e0bf72b6c9333348d15b22b53fd91365cc9024f879abf78a968759f2077b2927\",\n      \"src/camera.ts\": \"sha256:6597e735387b2a8d07ee4277e890ec0d730a0bac3811c32e27fff1a9f6fe17e9\",\n      \"src/device-definition-resolver.ts\": \"sha256:2afebf980e276f87a9849d3ced3bd9fc37ceae04b15ca20a9918aac37b77c6ca\",\n      \"src/device-trial.ts\": \"sha256:22b6535f959e1473b04e510949fb010b72c35b86cc8a52e86d75c2c2aa743cea\",\n      \"src/devices.ts\": \"sha256:f6000e8e8397d82cf1b9768b81b738eaee0e033710109e2a9c46438cf6f6e3d6\",\n      \"src/dreamerAudio.ts\": \"sha256:d16fb25ec175199777058db852dce64924913daef42e62fd65d326f28019407f\",\n      \"src/index.ts\": \"sha256:71e7a2a99e41d754c19a1ee6132040462a326e04180b8becfdc53008ed0888bb\",\n      \"src/interaction-mode.ts\": \"sha256:17a7fa4eaf8f51ac11c2bc84d862a95a463b867b59d1fc01bc3296b9644a8304\",\n      \"src/matchmaking.ts\": \"sha256:fedd9f86b15280d2af2441a4407ace86529518d48b0d363c4a9a4d8c24b61b0f\",\n      \"src/materials.ts\": \"sha256:735b17d42c30b96aa993225500a059875a7c4d2406d0bb076817889cdc5255c4\",\n      \"src/multiplayer-accessors.ts\": \"sha256:92434d2a4f04d330aa4445ef58263594c22c297b43185cc7291cdf2bb9e03bc5\",\n      \"src/multiplayer-contract/credential.ts\": \"sha256:8c6c914a18ad628828b8e1124c529b3073dbf2d586296f3bf3b2352d14b66a65\",\n      \"src/multiplayer-contract/final-rest.ts\": \"sha256:43e67e92afd345c0350ed908f0f89b238bc32a3e958990c34401869ddef1a097\",\n      \"src/multiplayer-contract/index.ts\": \"sha256:62a97049323ddc913834cc75405fae4f1c7f74a5acc8c4c2ee1d139025098911\",\n      \"src/multiplayer-contract/messages.ts\": \"sha256:1fe3d98eb6c14e8af9c371f0c3096818c30fc6c96b02c6cf44d3a0714577ae30\",\n      \"src/multiplayer-contract/room.ts\": \"sha256:1c857137854149233181d231908ac57f67c70de458f904985315eae315b33562\",\n      \"src/multiplayer-contract/state.ts\": \"sha256:2a52c27dafd006bc6acd275c79494ff36c0e9fb5d5c6704a99931f723cf88684\",\n      \"src/multiplayer.ts\": \"sha256:cb5cb685db7cf38e45ebebc08e184932d48a2b2a6c693066af0918ce5068a049\",\n      \"src/protocol.ts\": \"sha256:43a3d13c3c6cfcf413af7c4b24ad3b72288b2aeef6fe32020b4308766ddbc0cf\",\n      \"src/universal-vehicles.ts\": \"sha256:ef3e214be2477952487e395021319acd7a9ae3849419a4544ed2f90962ab3946\",\n      \"src/vault.ts\": \"sha256:8cf2091aac5167ba4789aaad062d5f3a55e07657e3d36fb0503a44f66abddaa0\",\n      \"src/vehicle-specialty-placement.ts\": \"sha256:92421b45863564057fc04a3a818b192808d5ef3d83100e6b49d2c228c35f3ceb\",\n      \"src/vehicle-specialty-transport.ts\": \"sha256:60d48876feac6c72e77a96d81b9188de402dced46f92b8dbb368a14029c6941a\",\n      \"src/voice.ts\": \"sha256:6a0a95de2c276f42e7ccbe8eaf769906ae8e93cc6cf2de027bc520e2f319d93e\"\n    },\n    \"repository\": \"hypersonic-laboratories/helix-web-sdk\"\n  },\n  \"stableErrors\": {\n    \"AUTH_REQUIRED\": \"A signed-in player session is required.\",\n    \"BACKEND_UNAVAILABLE\": \"The authoritative service could not be reached; clients must not fabricate a success or zero value.\",\n    \"CAPABILITY_DENIED\": \"The World manifest does not grant the required capability.\",\n    \"CONFLICT\": \"The request conflicts with current versioned state.\",\n    \"CORRECTION_REQUIRED\": \"The audited Web behavior is not safe to canonize across runtimes.\",\n    \"INVALID_ARGUMENT\": \"The request failed deterministic local or platform validation.\",\n    \"RATE_LIMITED\": \"The caller exceeded the platform rate policy.\",\n    \"REQUIRES_MANAGED_AUTHORITY\": \"The operation requires a HELIX-managed workload.\",\n    \"RUNTIME_CAPABILITY_UNAVAILABLE\": \"The runtime reported at run time that it cannot perform this operation (see camera.capabilities). Distinct from UNAVAILABLE, which is a STATIC claim about a method on a runtime: this is a live fact that can change back, so a calle"
    "r disables the control and keeps listening rather than concluding the method does not exist.\",\n    \"TIMEOUT\": \"The result is unresolved; retry with the same idempotency key when one exists.\",\n    \"UNAVAILABLE\": \"The service is not implemented for this runtime or profile.\"\n  },\n  \"standaloneFactories\": {\n    \"captureCanvas\": {\n      \"input\": \"source: HTMLCanvasElement, opts?: CaptureOptions\",\n      \"output\": \"Promise<Blob>\",\n      \"scope\": \"web_camera_implementation\",\n      \"signature\": \"(source: HTMLCanvasElement, opts?: CaptureOptions) => Promise<Blob>\"\n    },\n    \"createDreamerAudioClient\": {\n      \"input\": \"options: DreamerAudioClientOptions\",\n      \"output\": \"DreamerAudioClient\",\n      \"scope\": \"creator_time_generation\",\n      \"signature\": \"(options: DreamerAudioClientOptions) => DreamerAudioClient\"\n    },\n    \"createMaterialLibrary\": {\n      \"input\": \"assetBaseUrl: string, catalog: HelixMaterialCatalog\",\n      \"output\": \"HelixMaterialLibrary\",\n      \"scope\": \"web_material_implementation\",\n      \"signature\": \"(assetBaseUrl: string, catalog: HelixMaterialCatalog) => HelixMaterialLibrary\"\n    },\n    \"createRoomAccessors\": {\n      \"input\": \"sessionId: string, state: () => AccessorRoomState | null | undefined\",\n      \"output\": \"RoomAccessors\",\n      \"scope\": \"multiplayer_read_accessors\",\n      \"signature\": \"(sessionId: string, state: () => AccessorRoomState | null | undefined) => RoomAccessors\"\n    },\n    \"createVarsView\": {\n      \"input\": \"source: () => VarsBag\",\n      \"output\": \"VarsView\",\n      \"scope\": \"multiplayer_read_accessors\",\n      \"signature\": \"(source: () => VarsBag) => VarsView\"\n    },\n    \"createVaultClient\": {\n      \"input\": \"options: VaultClientOptions\",\n      \"output\": \"VaultClient\",\n      \"scope\": \"creator_and_runtime_asset_delivery\",\n      \"signature\": \"(options: VaultClientOptions) => VaultClient\"\n    },\n    \"createVaultLoadPlan\": {\n      \"input\": \"resolved: VaultResolvedAsset\",\n      \"output\": \"VaultLoadPlan\",\n      \"scope\": \"runtime_specific_artifact_selection\",\n      \"signature\": \"(resolved: VaultResolvedAsset) => VaultLoadPlan\"\n    },\n    \"cropRectForAspect\": {\n      \"input\": \"w: number, h: number, aspect?: CameraAspect\",\n      \"output\": \"CropRect\",\n      \"scope\": \"camera_geometry\",\n      \"signature\": \"(w: number, h: number, aspect?: CameraAspect) => CropRect\"\n    }\n  },\n  \"types\": {\n    \"enums\": {\n      \"Authority\": [\n        \"client\",\n        \"shell_player\",\n        \"platform\",\n        \"world_server\",\n        \"profile_dependent\"\n      ],\n      \"AuthorityProfile\": [\n        \"client\",\n        \"preview\",\n        \"listen\",\n        \"managed_server\"\n      ],\n      \"Availability\": [\n        \"available\",\n        \"conditional\",\n        \"unavailable\",\n        \"correction_required\"\n      ],\n      \"CameraAspect\": [\n        \"portrait\",\n        \"landscape\",\n        \"square\",\n        \"free\"\n      ],\n      \"CameraControlTarget\": [\n        \"camera\",\n        \"avatar\"\n      ],\n      \"CameraDroneLockMode\": [\n        \"free\",\n        \"lock\",\n        \"orbit\"\n      ],\n      \"CameraFilterId\": [\n        \"original\",\n        \"vivid\",\n        \"warm\",\n        \"cool\",\n        \"mono\"\n      ],\n      \"CameraLensPreset\": [\n        0.5,\n        1,\n        2,\n        3,\n        5\n      ],\n      \"CameraMediaMode\": [\n        \"photo\",\n        \"video\"\n      ],\n      \"CameraSessionState\": [\n        \"inactive\",\n        \"device-hold\",\n        \"rear\",\n        \"selfie\",\n        \"drone\"\n      ],\n      \"CameraSpatialMode\": [\n        \"rear\",\n        \"selfie\",\n        \"drone\"\n      ],\n      \"CameraTimerSeconds\": [\n        0,\n        3,\n        10\n      ],\n      \"HelixDeviceFormFactor\": [\n        \"phone\",\n        \"tablet\"\n      ],\n      \"HelixMatchmakingErrorCode\": [\n        \"unknown-queue\",\n        \"already-queued\",\n        \"already-matched\",\n        \"not-party-leader\",\n        \"party-too-large\",\n        \"party-changed\",\n        \"guests-cannot-queue\",\n        \"rate-limited\",\n        \"missing-permission\",\n        \"unavailable\",\n        \"not-ready\",\n        \"invalid-argument\",\n        \"request-failed\"\n      ],\n      \"HelixNotificationKind\": [\n   "
    "     \"success\",\n        \"failure\",\n        \"notification\",\n        \"message\"\n      ],\n      \"HelixPartyErrorCode\": [\n        \"not-party-leader\",\n        \"cannot-invite\",\n        \"party-full\",\n        \"too-many-invites\",\n        \"already-in-party\",\n        \"party-changed\",\n        \"not-in-party\",\n        \"unknown-party-member\",\n        \"invite-not-found\",\n        \"invite-expired\",\n        \"code-not-found\",\n        \"guests-cannot-party\",\n        \"rate-limited\",\n        \"missing-permission\",\n        \"unavailable\",\n        \"not-ready\",\n        \"invalid-argument\",\n        \"request-failed\"\n      ],\n      \"HelixPromptState\": [\n        \"default\",\n        \"available\",\n        \"locked\",\n        \"busy\"\n      ],\n      \"HelixVoiceMicMode\": [\n        \"ptt\",\n        \"open\",\n        \"muted\"\n      ],\n      \"HelixVoicePermission\": [\n        \"prompt\",\n        \"granted\",\n        \"denied\"\n      ],\n      \"LeaderboardOrder\": [\n        \"desc\",\n        \"asc\"\n      ],\n      \"PurchaseStatus\": [\n        \"Pending\",\n        \"Granted\",\n        \"Claimed\",\n        \"AlreadyOwned\",\n        \"InsufficientFunds\",\n        \"MaxPerUserReached\",\n        \"ProductInactive\",\n        \"ProductNotFound\",\n        \"NotInWorld\",\n        \"Unauthorized\",\n        \"RateLimited\",\n        \"Cancelled\",\n        \"Failed\",\n        \"Timeout\",\n        \"NotFound\",\n        \"PriceChanged\"\n      ],\n      \"QueueEndReason\": [\n        \"cancelled\",\n        \"timeout\",\n        \"heartbeat-lapsed\",\n        \"member-absent\",\n        \"party-changed\",\n        \"build-changed\",\n        \"queue-removed\",\n        \"replaced\",\n        \"ended\",\n        \"heartbeat-lost\",\n        \"match-expired\",\n        \"refused\",\n        \"session-changed\",\n        \"left\"\n      ],\n      \"QueueState\": [\n        \"none\",\n        \"waiting\",\n        \"matched\"\n      ],\n      \"TransportOwner\": [\n        \"local\",\n        \"shell\",\n        \"direct\",\n        \"network_provider\",\n        \"voice_provider\"\n      ],\n      \"VaultRuntime\": [\n        \"web\",\n        \"unreal\"\n      ]\n    },\n    \"records\": {\n      \"AchievementListResult\": {\n        \"fields\": {\n          \"achievements\": \"AchievementSummary[]\",\n          \"earned\": \"number\",\n          \"total\": \"number\"\n        }\n      },\n      \"AchievementMineResult\": {\n        \"fields\": {\n          \"achievements\": \"AchievementSummary[]\"\n        }\n      },\n      \"AvatarComposition\": {\n        \"fields\": {\n          \"appearance\": \"object\",\n          \"appearanceDigest\": \"string\",\n          \"base\": \"object\",\n          \"colorOverrides\": \"object\",\n          \"compositionDigest\": \"string\",\n          \"fill\": \"all|each?\",\n          \"hiddenSlotIds\": \"string[]\",\n          \"hostKind\": \"character\",\n          \"instanceThumbnailUrl\": \"string|null\",\n          \"itemId\": \"string\",\n          \"materialOverrides\": \"object\",\n          \"materials\": \"object\",\n          \"modelUrl\": \"string|null\",\n          \"mountSocket\": \"string|null?\",\n          \"slotId\": \"string\",\n          \"visibleAddOns\": \"object[]\",\n          \"visualOps\": \"unknown[]\"\n        }\n      },\n      \"Balance\": {\n        \"fields\": {\n          \"coins\": \"number\",\n          \"lix\": \"number\",\n          \"updatedAt\": \"string?\"\n        }\n      },\n      \"CameraAim\": {\n        \"fields\": {\n          \"pitch\": \"number\",\n          \"yaw\": \"number\"\n        }\n      },\n      \"CameraFocusPoint\": {\n        \"fields\": {\n          \"x\": \"number\",\n          \"y\": \"number\"\n        }\n      },\n      \"CameraVector3\": {\n        \"fields\": {\n          \"x\": \"number\",\n          \"y\": \"number\",\n          \"z\": \"number\"\n        }\n      },\n      \"DataStoreListPage\": {\n        \"fields\": {\n          \"keys\": \"string[]\",\n          \"nextCursor\": \"string?\"\n        }\n      },\n      \"DataStoreListPayload\": {\n        \"fields\": {\n          \"cursor\": \"string?\",\n          \"limit\": \"integer?\",\n          \"prefix\": \"string?\"\n        }\n      },\n      \"EquippedAvatar\": {\n        \"fields\": {\n          \"composition\": \"AvatarComposition|null?\",\n          \"contentHash\": \"string|null?\",\n          \"glbUrl\": \"string|null\",\n          \"inventoryItemId\": \"string|null?\",\n          \"itemId\": \"string|null\",\n          \"skeleton\": "
    "\"string|null\",\n          \"source\": \"equipped|auto|default|trial\"\n        }\n      },\n      \"EquippedEmote\": {\n        \"fields\": {\n          \"audio\": \"string?\",\n          \"clip\": \"string\",\n          \"itemId\": \"string\",\n          \"label\": \"string?\",\n          \"playback\": \"oneshot|loop\",\n          \"slot\": \"r0|r1|r2|r3|r4|r5|r6|r7|sit|lie\"\n        }\n      },\n      \"EquippedEmotes\": {\n        \"fields\": {\n          \"emotes\": \"EquippedEmote[]\"\n        }\n      },\n      \"HelixCameraCapability\": {\n        \"fields\": {\n          \"drone\": \"boolean\",\n          \"exposureBias\": \"boolean\",\n          \"focusPoint\": \"boolean\",\n          \"photo\": \"boolean\",\n          \"twoHandPose\": \"boolean\",\n          \"unavailableReason\": \"string?\",\n          \"video\": \"boolean\",\n          \"worldAudio\": \"boolean\"\n        }\n      },\n      \"HelixCameraControl\": {\n        \"fields\": {\n          \"aim\": \"CameraAim?\",\n          \"controlTarget\": \"CameraControlTarget?\",\n          \"exposureBias\": \"number?\",\n          \"filter\": \"CameraFilterId?\",\n          \"focusPoint\": \"CameraFocusPoint?\",\n          \"media\": \"CameraMediaMode?\",\n          \"recording\": \"boolean?\",\n          \"session\": \"CameraSessionState?\",\n          \"shutter\": \"boolean?\",\n          \"spatial\": \"CameraSpatialMode?\",\n          \"timerSeconds\": \"CameraTimerSeconds?\",\n          \"worldAudio\": \"boolean?\",\n          \"zoom\": \"number?\"\n        }\n      },\n      \"HelixCameraDroneCommand\": {\n        \"fields\": {\n          \"interpolationSeconds\": \"number?\",\n          \"lockMode\": \"CameraDroneLockMode?\",\n          \"returnToAvatar\": \"boolean?\",\n          \"subjectUserId\": \"string?\",\n          \"transform\": \"HelixCameraDroneTransform?\",\n          \"velocity\": \"CameraVector3?\"\n        }\n      },\n      \"HelixCameraDroneState\": {\n        \"fields\": {\n          \"droneId\": \"string\",\n          \"interpolationSeconds\": \"number\",\n          \"lockMode\": \"CameraDroneLockMode\",\n          \"returnDistance\": \"number\",\n          \"returning\": \"boolean\",\n          \"subjectUserId\": \"string\",\n          \"transform\": \"HelixCameraDroneTransform\",\n          \"velocity\": \"CameraVector3\"\n        }\n      },\n      \"HelixCameraDroneTransform\": {\n        \"fields\": {\n          \"pitch\": \"number\",\n          \"position\": \"CameraVector3\",\n          \"roll\": \"number\",\n          \"yaw\": \"number\"\n        }\n      },\n      \"HelixCameraShutter\": {\n        \"fields\": {\n          \"recording\": \"boolean\",\n          \"sequence\": \"integer\",\n          \"timerRemainingSeconds\": \"number\"\n        }\n      },\n      \"HelixCameraState\": {\n        \"fields\": {\n          \"aim\": \"CameraAim\",\n          \"capability\": \"HelixCameraCapability\",\n          \"controlTarget\": \"CameraControlTarget\",\n          \"drone\": \"HelixCameraDroneState?\",\n          \"exposureBias\": \"number?\",\n          \"filter\": \"CameraFilterId\",\n          \"focusPoint\": \"CameraFocusPoint?\",\n          \"lens\": \"CameraLensPreset\",\n          \"media\": \"CameraMediaMode\",\n          \"session\": \"CameraSessionState\",\n          \"shutter\": \"HelixCameraShutter\",\n          \"spatial\": \"CameraSpatialMode\",\n          \"timerSeconds\": \"CameraTimerSeconds\",\n          \"zoom\": \"number\"\n        }\n      },\n      \"HelixInitResult\": {\n        \"fields\": {\n          \"customizerSource\": \"PackageCustomizerSource|null\",\n          \"customizerSubject\": \"PackageCustomizerSubject|null\",\n          \"embedded\": \"boolean\",\n          \"runtimeFidelity\": \"RuntimeFidelityIntent|null\",\n          \"user\": \"HelixUser|null\",\n          \"world\": \"HelixWorldContext|null\"\n        }\n      },\n      \"HelixMultiplayerState\": {\n        \"fields\": {\n          \"maxPlayers\": \"number|null\",\n          \"playerCount\": \"number\",\n          \"players\": \"HelixMultiplayerRosterEntry[]\",\n          \"roomId\": \"string\",\n          \"roomType\": \"string?\",\n          \"sessionId\": \"string\",\n          \"ticketed\": \"boolean?\"\n        }\n      },\n      \"HelixPresenceActivity\": {\n        \"fields\": {\n          \"details\": \"string?\",\n          \"image\": \"string?\",\n          \"joinable\": \"boolean?\",\n          \"party\": \"PartySize?\",\n          \"state\": \"string\"\n        }\n      },\n      \"HelixSession\": {\n        \"fields\": {\n  "
    "        \"expiresAt\": \"string\",\n          \"scopes\": \"string[]\",\n          \"token\": \"string\",\n          \"trial\": \"HelixTrial?\",\n          \"user\": \"HelixUser\"\n        }\n      },\n      \"HelixUser\": {\n        \"fields\": {\n          \"displayName\": \"string|null\",\n          \"id\": \"string\",\n          \"username\": \"string\"\n        }\n      },\n      \"HelixVoiceState\": {\n        \"fields\": {\n          \"activeDeviceId\": \"string?\",\n          \"audioBlocked\": \"boolean?\",\n          \"available\": \"boolean\",\n          \"channelId\": \"string?\",\n          \"connected\": \"boolean\",\n          \"devices\": \"HelixVoiceDevice[]\",\n          \"error\": \"string?\",\n          \"micMode\": \"HelixVoiceMicMode\",\n          \"permission\": \"HelixVoicePermission\",\n          \"pttKey\": \"string?\",\n          \"speakingUserIds\": \"string[]\",\n          \"transmitting\": \"boolean\"\n        }\n      },\n      \"HelixWorldContext\": {\n        \"fields\": {\n          \"id\": \"string\",\n          \"slug\": \"string\",\n          \"title\": \"string\"\n        }\n      },\n      \"InventoryItem\": {\n        \"fields\": {\n          \"avatarSlot\": \"string|null?\",\n          \"category\": \"string?\",\n          \"description\": \"string|null?\",\n          \"equipped\": \"boolean?\",\n          \"id\": \"string?\",\n          \"itemId\": \"string\",\n          \"kind\": \"string?\",\n          \"metadata\": \"object?\",\n          \"quantity\": \"number\",\n          \"socket\": \"string|null?\",\n          \"subCategory\": \"string|null?\",\n          \"thumbnailUrl\": \"string|null?\",\n          \"title\": \"string\"\n        }\n      },\n      \"LeaderboardPage\": {\n        \"fields\": {\n          \"entries\": \"LeaderboardEntry[]\",\n          \"truncated\": \"boolean\"\n        }\n      },\n      \"LeaderboardSubmitResult\": {\n        \"fields\": {\n          \"best\": \"number|null\",\n          \"updated\": \"boolean\"\n        }\n      },\n      \"ListenAdmissionResult\": {\n        \"fields\": {\n          \"admitted\": \"boolean\",\n          \"joinerUserId\": \"string?\",\n          \"reason\": \"string?\",\n          \"seatId\": \"string?\"\n        }\n      },\n      \"ListenReleaseResult\": {\n        \"fields\": {\n          \"released\": \"boolean\"\n        }\n      },\n      \"MatchFound\": {\n        \"fields\": {\n          \"expiresAt\": \"number\",\n          \"instanceId\": \"string\",\n          \"roomType\": \"string\",\n          \"ticketId\": \"string\"\n        }\n      },\n      \"PackageCustomizerContext\": {\n        \"fields\": {\n          \"source\": \"PackageCustomizerSource|null\",\n          \"subject\": \"PackageCustomizerSubject|null\"\n        }\n      },\n      \"Party\": {\n        \"fields\": {\n          \"code\": \"PartyCode?\",\n          \"id\": \"string\",\n          \"leaderId\": \"string\",\n          \"maxSize\": \"integer\",\n          \"members\": \"PartyMember[]\"\n        }\n      },\n      \"PartyCode\": {\n        \"fields\": {\n          \"code\": \"string\",\n          \"expiresAt\": \"number\"\n        }\n      },\n      \"PartyInvite\": {\n        \"fields\": {\n          \"expiresAt\": \"number\",\n          \"from\": \"PartyMember\",\n          \"id\": \"string\",\n          \"partyId\": \"string\"\n        }\n      },\n      \"PartyInviteReceipt\": {\n        \"fields\": {\n          \"expiresAt\": \"number\",\n          \"inviteId\": \"string\"\n        }\n      },\n      \"PartyMember\": {\n        \"fields\": {\n          \"displayName\": \"string\",\n          \"userId\": \"string\"\n        }\n      },\n      \"PartyState\": {\n        \"fields\": {\n          \"invites\": \"PartyInvite[]\",\n          \"party\": \"Party|null\"\n        }\n      },\n      \"PurchaseOptions\": {\n        \"fields\": {\n          \"idempotencyKey\": \"string?\",\n          \"quantity\": \"integer?\"\n        }\n      },\n      \"PurchaseResult\": {\n        \"fields\": {\n          \"balanceAfterLix\": \"number?\",\n          \"completed\": \"boolean\",\n          \"itemId\": \"string|null?\",\n          \"priceLix\": \"number?\",\n          \"receipt\": \"string?\",\n          \"status\": \"PurchaseStatus\"\n        }\n      },\n      \"QueueStatus\": {\n        \"fields\": {\n          \"match\": \"MatchFound?\",\n          \"queueId\": \"string?\",\n          \"reason\": \"QueueEndReason?\",\n          \"serverReason\": \"string?\",\n          \"status\": \"QueueState\",\n          \"waiting\": \"QueueWaiting?\"\n        }\n      },\n      \"QueueWaiting\": {\n        \""
    "fields\": {\n          \"needed\": \"integer\",\n          \"players\": \"integer\"\n        }\n      },\n      \"RuntimeError\": {\n        \"fields\": {\n          \"code\": \"StableError\",\n          \"message\": \"string\",\n          \"remediation\": \"string?\",\n          \"retryable\": \"boolean\"\n        }\n      },\n      \"RuntimeFidelityIntent\": {\n        \"fields\": {\n          \"renderScaleOverride\": \"RuntimeFidelityRenderScale|null\",\n          \"requestedVisualTier\": \"RuntimeFidelityVisualTier\",\n          \"runtimeProfileQuality\": \"RuntimeProfileQuality|null\",\n          \"version\": \"1\"\n        }\n      },\n      \"SavedPhoto\": {\n        \"fields\": {\n          \"assetId\": \"string\",\n          \"createdAt\": \"string\",\n          \"thumbnailUrl\": \"string\",\n          \"url\": \"string\",\n          \"worldName\": \"string\"\n        }\n      }\n    }\n  }\n}";
inline constexpr std::string_view ContractJson{ContractJsonData, sizeof(ContractJsonData) - 1};

} // namespace Helix::RuntimeContract
