@indiegems/gem-web-sdk 20.1.0 → 21.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/README.md +1 -0
- package/brand/ticket-hero-128.png +0 -0
- package/brand/ticket-hero-256.png +0 -0
- package/brand/ticket-hero-384.png +0 -0
- package/brand/ticket-hero-512.png +0 -0
- package/brand/ticket-hero-768.png +0 -0
- package/brand/ticket-icon-20-1.5x.png +0 -0
- package/brand/ticket-icon-20-1x.png +0 -0
- package/brand/ticket-icon-20-2x.png +0 -0
- package/brand/ticket-icon-20-3x.png +0 -0
- package/brand/ticket-icon-32-1.5x.png +0 -0
- package/brand/ticket-icon-32-1x.png +0 -0
- package/brand/ticket-icon-32-2x.png +0 -0
- package/brand/ticket-icon-32-3x.png +0 -0
- package/brand/ticket-icon-ingame-20-1.5x.png +0 -0
- package/brand/ticket-icon-ingame-20-1x.png +0 -0
- package/brand/ticket-icon-ingame-20-2x.png +0 -0
- package/brand/ticket-icon-ingame-20-3x.png +0 -0
- package/brand/ticket-icon-ingame-32-1.5x.png +0 -0
- package/brand/ticket-icon-ingame-32-1x.png +0 -0
- package/brand/ticket-icon-ingame-32-2x.png +0 -0
- package/brand/ticket-icon-ingame-32-3x.png +0 -0
- package/brand/ticket-pile-1-128.png +0 -0
- package/brand/ticket-pile-1-256.png +0 -0
- package/brand/ticket-pile-1-384.png +0 -0
- package/brand/ticket-pile-1-512.png +0 -0
- package/brand/ticket-pile-1-768.png +0 -0
- package/brand/ticket-pile-2-128.png +0 -0
- package/brand/ticket-pile-2-256.png +0 -0
- package/brand/ticket-pile-2-384.png +0 -0
- package/brand/ticket-pile-2-512.png +0 -0
- package/brand/ticket-pile-2-768.png +0 -0
- package/dist/conformance.d.ts +1 -1
- package/dist/dev-tools.d.ts +1 -0
- package/dist/function.d.ts +11 -3
- package/dist/game.d.ts +79 -12
- package/dist/gem-web-sdk.bridge.js +2 -2
- package/dist/gem-web-sdk.conformance.js +3 -3
- package/dist/gem-web-sdk.dev-tools.js +2 -0
- package/dist/gem-web-sdk.esm.js +3 -3
- package/dist/gem-web-sdk.function.js +3 -3
- package/dist/gem-web-sdk.game.js +3 -3
- package/dist/gem-web-sdk.min.js +3 -3
- package/dist/gem-web-sdk.sdk.js +3 -3
- package/dist/gem-web-sdk.server.js +2 -2
- package/dist/index.d.ts +103 -48
- package/dist/sdk.d.ts +79 -12
- package/docs/analytics.md +12 -0
- package/docs/api/api-reference-function.md +14 -2
- package/docs/api/api-reference-game.md +357 -21
- package/docs/api/api-reference-server.md +1 -1
- package/docs/api/reference.json +413 -16
- package/docs/arcade-economy.md +2 -2
- package/docs/brand-art.md +65 -16
- package/docs/changelog.md +40 -0
- package/docs/game-economy-tutorial.md +6 -3
- package/docs/getting-started.md +122 -30
- package/docs/graphics-route.md +188 -0
- package/docs/inventory-and-catalogs.md +69 -27
- package/docs/manifest.json +23 -18
- package/docs/server-bundles.md +3 -3
- package/docs/what-a-game-must-do.md +33 -2
- package/package.json +5 -1
- package/schema/bridge.v1.json +263 -12
- package/schema/capabilities.public.json +26 -0
package/CHANGELOG.md
CHANGED
|
@@ -16,6 +16,46 @@ Its entries are grouped under up to five headings:
|
|
|
16
16
|
- **Rebuild**: a type changed. Recompile against the new version; code that compiles today keeps compiling unless the entry says otherwise.
|
|
17
17
|
- **New capability**: something a game can now do. Nothing changes unless you use it.
|
|
18
18
|
|
|
19
|
+
## 21.1.0
|
|
20
|
+
|
|
21
|
+
Upgrading from 21.0.0. Impact: required.
|
|
22
|
+
|
|
23
|
+
### Must change
|
|
24
|
+
|
|
25
|
+
- ShareApi.request now returns a promise instead of nothing. When the Arcade refuses a share, the promise rejects with a ShareRefusal that names the reason and the offending param. Await the call and handle the rejection, for example by telling the player the share could not be sent. With an older Arcade the promise resolves at once, as before. The SDK also refuses, before sending, share params whose keys the Arcade reserves for its own play links, and the error names the key. If your game uses such a name as its own share param, rename it. A current Arcade carries most reserved keys through a share link and returns them unchanged, but an older one still refuses them.
|
|
26
|
+
- PurchaseRefusalCode has a new value, guest_upgrade_required, returned when a web guest tries to spend platform currency directly. Treat it like any other decline: draw no purchase, and do not retry. If you switch over the refusal codes exhaustively, add a case for it or your code will stop compiling.
|
|
27
|
+
|
|
28
|
+
### Should change
|
|
29
|
+
|
|
30
|
+
- Spend Gems and Coins through the Arcade's purchase sheet, not through a direct spend on the entity mutations. A web guest's direct spend is now refused. The SDK hands that one refusal to the Arcade as a safety net and rejects your call with the original error straight away, without waiting for an answer or retrying. Move any direct platform-currency spend to the purchase sheet flow. See [the deprecation policy](docs/deprecation-policy.md#4-what-is-deprecated-today).
|
|
31
|
+
|
|
32
|
+
### Rebuild
|
|
33
|
+
|
|
34
|
+
- Several types and signatures changed in compatible ways: GemFrame.requestPurchase gained an optional origin argument, GemFrame.requestShare gained an optional requestId argument, the MutationsApi constructor gained an optional hand-off callback, and GemCapability, ParentMessage and PARENT_TO_FRAME gained new capabilities and message kinds for purchase settlement, graphics routes and share results. Recompiling is enough. If you test against your own stand-in for the Arcade, rebuild it against this release and bring it up to the newer parent conformance version.
|
|
35
|
+
|
|
36
|
+
### New capability
|
|
37
|
+
|
|
38
|
+
- PurchaseApi.onSettled lets a game hear a purchase that completed after its original call had already been answered, for example one finished through the Arcade after a guest's refused spend. The game is told once the platform confirms the purchase, as a PurchaseSettlement, and the player's data is refreshed. Subscribe to it so you can grant the purchase when it lands. It only fires on an Arcade that supports it.
|
|
39
|
+
- Gem.graphics lets a game ask which renderer to create just before it creates one. The answer says the route to use and whether the device is on the platform's list of devices known to draw wrongly on WebGL. The answer is WebGL everywhere except on a listed device, and there WebGPU only if it hands out an adapter. A listed device with no working WebGPU gets your safe WebGL recipe. The call is time-bounded and never rejects. The list ships built in, and the Arcade can replace it for live games without a rebuild. Call it before creating a renderer and make every canvas follow the answer.
|
|
40
|
+
- A new dev-tools entry point is available for a game's dev-only code, such as a cheat panel, level skipper or debug menu. Importing it from that code marks the build as carrying dev-only code. Builds so marked can be uploaded and played on the dev channel but are refused on the test and release channels. Keep the import behind a build-time switch that is off for test and release builds so the marker is absent from them.
|
|
41
|
+
|
|
42
|
+
## 21.0.0
|
|
43
|
+
|
|
44
|
+
Upgrading from 20.1.0. Impact: required.
|
|
45
|
+
|
|
46
|
+
### May stop
|
|
47
|
+
|
|
48
|
+
- You do not need to write your own code to count lost WebGL contexts for analytics. Every game now reports each loss automatically, with no code of its own. The SDK only observes the loss, so whether your game restores its context stays your decision, and your own handling keeps working unchanged.
|
|
49
|
+
|
|
50
|
+
### Rebuild
|
|
51
|
+
|
|
52
|
+
- The set of platform event names now includes a new member, gem_graphics_context_lost, which the SDK emits when the browser takes away one of the game's WebGL contexts. Recompiling is enough for most games. If your game switches over every platform event name exhaustively, or maps each name to a value, add a case for the new name so it still compiles.
|
|
53
|
+
|
|
54
|
+
### New capability
|
|
55
|
+
|
|
56
|
+
- A new in-game Coins icon is available in two sizes, 20 and 32, each at four pixel ratios: 1x, 1.5x, 2x and 3x. It is the Coins coin without the violet rim, so it does not look like the Arcade's own chrome inside a game. Use it wherever your game shows Coins. The wallet icon keeps its violet rim.
|
|
57
|
+
- Two coin piles are now available for showing a Coins reward sized by how much it is: pile 1 for an everyday reward and pile 2 for a bigger one. Each comes in five widths: 128, 256, 384, 512 and 768. They share one frame and baseline, so a row of them climbs from the smaller to the larger. Larger piles are reserved for the Arcade's own shop. The Coins hero art remains the choice when the size of the reward does not matter.
|
|
58
|
+
|
|
19
59
|
## 20.1.0
|
|
20
60
|
|
|
21
61
|
Upgrading from 20.0.0. Impact: required.
|
package/README.md
CHANGED
|
@@ -28,6 +28,7 @@ Read them here rather than guessing from the type declarations, which carry sign
|
|
|
28
28
|
| saving a player's progress | [`docs/saving-player-progress.md`](docs/saving-player-progress.md) |
|
|
29
29
|
| asking the player to sign in | [`docs/player-sign-in.md`](docs/player-sign-in.md) |
|
|
30
30
|
| vibrating the player's device, the iPhone included | [`docs/vibration.md`](docs/vibration.md) |
|
|
31
|
+
| WebGL or WebGPU: which renderer to make on this device | [`docs/graphics-route.md`](docs/graphics-route.md) |
|
|
31
32
|
| leaderboards | [`docs/leaderboards.md`](docs/leaderboards.md) |
|
|
32
33
|
| currencies, items, shops and loot | [`docs/inventory-and-catalogs.md`](docs/inventory-and-catalogs.md), [`docs/game-economy-tutorial.md`](docs/game-economy-tutorial.md), [`docs/trading-and-gifting.md`](docs/trading-and-gifting.md) |
|
|
33
34
|
| Gems, Coins and achievements | [`docs/arcade-economy.md`](docs/arcade-economy.md), [`docs/achievements.md`](docs/achievements.md), [`docs/brand-art.md`](docs/brand-art.md) |
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/conformance.d.ts
CHANGED
|
@@ -50,7 +50,7 @@ interface ParentConformanceResult {
|
|
|
50
50
|
readonly ok: boolean;
|
|
51
51
|
readonly message?: string;
|
|
52
52
|
}
|
|
53
|
-
declare const PARENT_CONFORMANCE_VERSION =
|
|
53
|
+
declare const PARENT_CONFORMANCE_VERSION = 6;
|
|
54
54
|
declare const PARENT_CONFORMANCE_CASES: readonly ParentConformanceCase[];
|
|
55
55
|
declare function runParentConformance(factory: ParentFactory, options: ParentConformanceOptions): Promise<readonly ParentConformanceResult[]>;
|
|
56
56
|
export { PARENT_CONFORMANCE_CASES, PARENT_CONFORMANCE_VERSION, type ParentConformanceCase, ParentConformanceError, type ParentConformanceOptions, type ParentConformanceResult, type ParentFactory, type ParentFixture, type ParentState, type ParentUnderTest, runParentConformance };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/function.d.ts
CHANGED
|
@@ -102,7 +102,7 @@ declare class GemClient {
|
|
|
102
102
|
private backoff;
|
|
103
103
|
}
|
|
104
104
|
type SessionEndReason = "grant_expiring" | "session_ended" | "navigating" | "kill_switch" | "pagehide";
|
|
105
|
-
type PlatformEventName = "gem_session_start" | "gem_session_end" | "gem_pause" | "gem_resume" | "gem_boot_ready" | "gem_match_started" | "gem_match_ended" | "gem_auth_lost";
|
|
105
|
+
type PlatformEventName = "gem_session_start" | "gem_session_end" | "gem_pause" | "gem_resume" | "gem_boot_ready" | "gem_match_started" | "gem_match_ended" | "gem_auth_lost" | "gem_graphics_context_lost";
|
|
106
106
|
type AnalyticsValue = string | number;
|
|
107
107
|
interface AnalyticsRejection {
|
|
108
108
|
readonly index: number;
|
|
@@ -232,6 +232,13 @@ declare class ChallengesApi {
|
|
|
232
232
|
constructor(api: GameApi);
|
|
233
233
|
list(options?: ListChallengesOptions): Promise<Challenge[]>;
|
|
234
234
|
}
|
|
235
|
+
interface RefusedPurchase {
|
|
236
|
+
readonly kind: "item" | "recipe";
|
|
237
|
+
readonly targetId: string;
|
|
238
|
+
readonly catalogId?: string;
|
|
239
|
+
readonly currencySlug: string;
|
|
240
|
+
readonly quantity: number;
|
|
241
|
+
}
|
|
235
242
|
type CacheParam = string | number | boolean | undefined;
|
|
236
243
|
declare class EntityReadCache {
|
|
237
244
|
private readonly clock;
|
|
@@ -471,7 +478,8 @@ declare class MutationsApi {
|
|
|
471
478
|
private readonly api;
|
|
472
479
|
private readonly entity;
|
|
473
480
|
private readonly cache;
|
|
474
|
-
|
|
481
|
+
private readonly handOffRefused?;
|
|
482
|
+
constructor(api: GameApi, entity: EntityRef, cache: EntityReadCache, handOffRefused?: ((refused: RefusedPurchase) => void) | undefined);
|
|
475
483
|
create(operations: readonly InventoryOperation[], options?: OrderOptions): Promise<OrderResult>;
|
|
476
484
|
createMany(orders: ReadonlyArray<readonly InventoryOperation[]>, options?: OrderOptions): Promise<unknown>;
|
|
477
485
|
recipeAvailability(catalogId: string, recipeId: string, signal?: AbortSignal): Promise<RecipeAvailability>;
|
|
@@ -1073,4 +1081,4 @@ interface PlayerBoost {
|
|
|
1073
1081
|
readonly multipliers: readonly PlayerBoostMultiplier[];
|
|
1074
1082
|
readonly expiresInDays?: number;
|
|
1075
1083
|
}
|
|
1076
|
-
export { AnalyticsApi, type AnalyticsApiOptions, type AnalyticsFlushOptions, type AnalyticsFlushResult, type AnalyticsOptions, type AnalyticsRejection, type AnalyticsValue, AuthError, type AuthFailure, type AuthState, type Avatar3dFamily, type Base64String, type Boundary, type BucketConfig, type BucketResetInterval, type BytesResponse, CONDITIONAL_HEADERS, type CacheParam, type Challenge, type ChallengeWindow, ChallengesApi, type Character, CharactersApi, type ClientOptions, type Clock, type ConditionalRequestHeaders, type ConfiguredPurchasePayment, type ConfiguredPurchaseRequest, type ConfiguredPurchaseResult, type CreateCharacterOptions, CurrenciesApi, type CurrencyBalance, type CurrencyBucket, type CurrencyReadOptions, type CurrencyRow, type DescribeSaveOptions, type DirectPurchaseRequest, type DirectPurchaseResult, type EarnAllowance, type EarnAllowanceEvent, type EarnAllowancePeriod, type EarnAllowanceReadOptions, type EarnAllowanceSignal, type EntityLeaderboard, type EntityLeaderboardEntry, type EntityLeaderboardOptions, EntityReadCache, type EntityRef, type EntityScope, type EntityType, type Friend, type FriendChallenge, FriendChallengeError, type FriendChallengeErrorCode, type FriendChallengeOutcome, type FriendChallengeOutcomeKind, type FriendChallengeRequest, type FriendChallengesPage, FriendsApi, type FriendsApiDependencies, type FriendsPage, type FunctionContext, type FunctionFailure, type FunctionInvokeOptions, type FunctionResult, type GameApi, type GameOrderSource, type GamePass, GemApiError, GemClient, type GemErrorReason, type GemFunction, GemFunctionError, type GemFunctionIdentity, GemSaveError, type GetLeaderboardOptions, type GetSaveOptions, type GetSettingOptions, type InitiateTransferOptions, InventoryApi, type InventoryItem, type InventoryOperation, type InventorySnapshot, type ItemCategory, type Leaderboard, type LeaderboardEntry, type LeaderboardPeriod, LeaderboardsApi, type ListChallengesOptions, type ListFriendChallengesOptions, type ListFriendsOptions, type ListSavesOptions, type ListTransfersOptions, type LootRoll, MAX_PERIODS_BACK, MutationsApi, type Order, type OrderOptions, type OrderPageOptions, type OrderResult, type OrderSource, OrdersApi, type Page, type PassesApi, type PassesEvent, type PeriodOptions, PlatformApi, PlatformCurrenciesApi, type PlatformCurrency, type PlatformCurrencyAccess, type PlatformCurrencyPurchasePayment, type PlatformCurrencyPurchaseRequest, type PlatformCurrencyPurchaseResult, type PlatformCurrencyReadOptions, PlatformEarnAllowanceApi, type PlatformEventName, type PlatformPrice, type PlayerBadge, type PlayerBoost, type PlayerBoostMultiplier, type PlayerIdentity, type PlayerProfile, type PlayerScope, PlayerText, type ProfileCallOptions, type ProfileShowcaseEntry, ProfilesApi, type Progression, type ProgressionAchievement, ProgressionsApi, type PurchaseOptions, type PutBytesOptions, type PutSaveOptions, type PutSettingOptions, type RankedRow, type RecipeAvailability, type RecipeChange, type RecipeLock, type RecipeResult, type RecipeUsage, type RecipeUsageList, type RequestOptions, type SavePage, type SaveRecord, SavesApi, type SavesOptions, type SessionEndReason, type Setting, SettingsApi, ShowcaseApi, type ShowcaseCallOptions, type ShowcaseFriendEntry, type ShowcaseFriends, type ShowcaseValue, type SlotInfo, type SnapshotCurrency, type SnapshotItem, type SnapshotOptions, type SnapshotPageOptions, type TokenGrant, type Transfer, type TransferDirection, TransfersApi, type Transport, TransportRefusal, type TransportRequest, type TransportResponse, type VersionedGetOptions, type VersionedResponse, type WornAvatar3d, asPlayerText, createGem, mapIdentity, platformIconUrl, text, toBase64 };
|
|
1084
|
+
export { AnalyticsApi, type AnalyticsApiOptions, type AnalyticsFlushOptions, type AnalyticsFlushResult, type AnalyticsOptions, type AnalyticsRejection, type AnalyticsValue, AuthError, type AuthFailure, type AuthState, type Avatar3dFamily, type Base64String, type Boundary, type BucketConfig, type BucketResetInterval, type BytesResponse, CONDITIONAL_HEADERS, type CacheParam, type Challenge, type ChallengeWindow, ChallengesApi, type Character, CharactersApi, type ClientOptions, type Clock, type ConditionalRequestHeaders, type ConfiguredPurchasePayment, type ConfiguredPurchaseRequest, type ConfiguredPurchaseResult, type CreateCharacterOptions, CurrenciesApi, type CurrencyBalance, type CurrencyBucket, type CurrencyReadOptions, type CurrencyRow, type DescribeSaveOptions, type DirectPurchaseRequest, type DirectPurchaseResult, type EarnAllowance, type EarnAllowanceEvent, type EarnAllowancePeriod, type EarnAllowanceReadOptions, type EarnAllowanceSignal, type EntityLeaderboard, type EntityLeaderboardEntry, type EntityLeaderboardOptions, EntityReadCache, type EntityRef, type EntityScope, type EntityType, type Friend, type FriendChallenge, FriendChallengeError, type FriendChallengeErrorCode, type FriendChallengeOutcome, type FriendChallengeOutcomeKind, type FriendChallengeRequest, type FriendChallengesPage, FriendsApi, type FriendsApiDependencies, type FriendsPage, type FunctionContext, type FunctionFailure, type FunctionInvokeOptions, type FunctionResult, type GameApi, type GameOrderSource, type GamePass, GemApiError, GemClient, type GemErrorReason, type GemFunction, GemFunctionError, type GemFunctionIdentity, GemSaveError, type GetLeaderboardOptions, type GetSaveOptions, type GetSettingOptions, type InitiateTransferOptions, InventoryApi, type InventoryItem, type InventoryOperation, type InventorySnapshot, type ItemCategory, type Leaderboard, type LeaderboardEntry, type LeaderboardPeriod, LeaderboardsApi, type ListChallengesOptions, type ListFriendChallengesOptions, type ListFriendsOptions, type ListSavesOptions, type ListTransfersOptions, type LootRoll, MAX_PERIODS_BACK, MutationsApi, type Order, type OrderOptions, type OrderPageOptions, type OrderResult, type OrderSource, OrdersApi, type Page, type PassesApi, type PassesEvent, type PeriodOptions, PlatformApi, PlatformCurrenciesApi, type PlatformCurrency, type PlatformCurrencyAccess, type PlatformCurrencyPurchasePayment, type PlatformCurrencyPurchaseRequest, type PlatformCurrencyPurchaseResult, type PlatformCurrencyReadOptions, PlatformEarnAllowanceApi, type PlatformEventName, type PlatformPrice, type PlayerBadge, type PlayerBoost, type PlayerBoostMultiplier, type PlayerIdentity, type PlayerProfile, type PlayerScope, PlayerText, type ProfileCallOptions, type ProfileShowcaseEntry, ProfilesApi, type Progression, type ProgressionAchievement, ProgressionsApi, type PurchaseOptions, type PutBytesOptions, type PutSaveOptions, type PutSettingOptions, type RankedRow, type RecipeAvailability, type RecipeChange, type RecipeLock, type RecipeResult, type RecipeUsage, type RecipeUsageList, type RefusedPurchase, type RequestOptions, type SavePage, type SaveRecord, SavesApi, type SavesOptions, type SessionEndReason, type Setting, SettingsApi, ShowcaseApi, type ShowcaseCallOptions, type ShowcaseFriendEntry, type ShowcaseFriends, type ShowcaseValue, type SlotInfo, type SnapshotCurrency, type SnapshotItem, type SnapshotOptions, type SnapshotPageOptions, type TokenGrant, type Transfer, type TransferDirection, TransfersApi, type Transport, TransportRefusal, type TransportRequest, type TransportResponse, type VersionedGetOptions, type VersionedResponse, type WornAvatar3d, asPlayerText, createGem, mapIdentity, platformIconUrl, text, toBase64 };
|
package/dist/game.d.ts
CHANGED
|
@@ -621,6 +621,19 @@ type TrackDefinition = {
|
|
|
621
621
|
"requires_item_id"?: string | null;
|
|
622
622
|
"track_id": string;
|
|
623
623
|
};
|
|
624
|
+
type PurchaseRefusalCode = "unknown_currency" | "currency_not_in_game_payable" | "not_purchasable" | "no_price_in_currency" | "busy" | "cancelled" | "insufficient_funds" | "price_mismatch" | "config_version_stale" | "platform_currency_unavailable" | "not_available" | "recipe_locked" | "already_owned" | "guest_upgrade_required" | "recipe_on_cooldown" | "recipe_max_uses_exceeded" | "item_max_stack_exceeded" | "recipe_costs_unmet" | "quantity_invalid" | "error";
|
|
625
|
+
declare class PurchaseRefusal extends RangeError {
|
|
626
|
+
readonly code: Extract<PurchaseRefusalCode, "unknown_currency" | "not_purchasable" | "no_price_in_currency" | "quantity_invalid">;
|
|
627
|
+
readonly retryable: false;
|
|
628
|
+
constructor(code: Extract<PurchaseRefusalCode, "unknown_currency" | "not_purchasable" | "no_price_in_currency" | "quantity_invalid">, message: string);
|
|
629
|
+
}
|
|
630
|
+
interface RefusedPurchase {
|
|
631
|
+
readonly kind: "item" | "recipe";
|
|
632
|
+
readonly targetId: string;
|
|
633
|
+
readonly catalogId?: string;
|
|
634
|
+
readonly currencySlug: string;
|
|
635
|
+
readonly quantity: number;
|
|
636
|
+
}
|
|
624
637
|
type CacheParam = string | number | boolean | undefined;
|
|
625
638
|
declare class EntityReadCache {
|
|
626
639
|
private readonly clock;
|
|
@@ -860,7 +873,8 @@ declare class MutationsApi {
|
|
|
860
873
|
private readonly api;
|
|
861
874
|
private readonly entity;
|
|
862
875
|
private readonly cache;
|
|
863
|
-
|
|
876
|
+
private readonly handOffRefused?;
|
|
877
|
+
constructor(api: GameApi, entity: EntityRef, cache: EntityReadCache, handOffRefused?: ((refused: RefusedPurchase) => void) | undefined);
|
|
864
878
|
create(operations: readonly InventoryOperation[], options?: OrderOptions): Promise<OrderResult>;
|
|
865
879
|
createMany(orders: ReadonlyArray<readonly InventoryOperation[]>, options?: OrderOptions): Promise<unknown>;
|
|
866
880
|
recipeAvailability(catalogId: string, recipeId: string, signal?: AbortSignal): Promise<RecipeAvailability>;
|
|
@@ -1501,7 +1515,7 @@ declare class FunctionsApi {
|
|
|
1501
1515
|
}
|
|
1502
1516
|
type SessionEndReason = "grant_expiring" | "session_ended" | "navigating" | "kill_switch" | "pagehide";
|
|
1503
1517
|
type MatchTransport = "dedicated" | "p2p";
|
|
1504
|
-
type PlatformEventName = "gem_session_start" | "gem_session_end" | "gem_pause" | "gem_resume" | "gem_boot_ready" | "gem_match_started" | "gem_match_ended" | "gem_auth_lost";
|
|
1518
|
+
type PlatformEventName = "gem_session_start" | "gem_session_end" | "gem_pause" | "gem_resume" | "gem_boot_ready" | "gem_match_started" | "gem_match_ended" | "gem_auth_lost" | "gem_graphics_context_lost";
|
|
1505
1519
|
declare const PLATFORM_EVENTS: readonly PlatformEventName[];
|
|
1506
1520
|
type AnalyticsValue = string | number;
|
|
1507
1521
|
interface AnalyticsRejection {
|
|
@@ -1572,6 +1586,22 @@ interface BootTimelineOptions {
|
|
|
1572
1586
|
declare function markOnResolve<T>(boot: BootTimeline, name: string, work: Promise<T>, log?: ((message: string) => void) | null): Promise<T>;
|
|
1573
1587
|
declare function reportOnResolve(boot: BootTimeline, log?: ((message: string) => void) | null): <T>(work: Promise<T>) => Promise<T>;
|
|
1574
1588
|
declare function createBootTimeline(options?: BootTimelineOptions): BootTimeline;
|
|
1589
|
+
type GemGraphicsRoute = "webgpu" | "webgl";
|
|
1590
|
+
interface GemPreferredRoute {
|
|
1591
|
+
readonly route: GemGraphicsRoute;
|
|
1592
|
+
readonly listed: boolean;
|
|
1593
|
+
}
|
|
1594
|
+
interface GemGraphicsRouteEntry {
|
|
1595
|
+
readonly gpu: string;
|
|
1596
|
+
readonly route?: string;
|
|
1597
|
+
readonly host?: string;
|
|
1598
|
+
}
|
|
1599
|
+
interface PreferredRouteOptions {
|
|
1600
|
+
readonly timeoutMs?: number;
|
|
1601
|
+
}
|
|
1602
|
+
interface GraphicsApi {
|
|
1603
|
+
preferredRoute(options?: PreferredRouteOptions): Promise<GemPreferredRoute>;
|
|
1604
|
+
}
|
|
1575
1605
|
type DevToolsOpener = "game" | "platform";
|
|
1576
1606
|
interface GemDevTools {
|
|
1577
1607
|
open(): Promise<boolean>;
|
|
@@ -2276,6 +2306,15 @@ interface GemClusterTarget {
|
|
|
2276
2306
|
readonly clusterTargetId: string;
|
|
2277
2307
|
readonly clusterTargetIds?: string[];
|
|
2278
2308
|
}
|
|
2309
|
+
interface GemGraphicsRoutes {
|
|
2310
|
+
readonly gem: typeof PROTOCOL;
|
|
2311
|
+
readonly type: "gem.graphicsRoutes";
|
|
2312
|
+
readonly entries: {
|
|
2313
|
+
gpu: string;
|
|
2314
|
+
route?: string;
|
|
2315
|
+
host?: string;
|
|
2316
|
+
}[];
|
|
2317
|
+
}
|
|
2279
2318
|
interface GemScreenshotDenied {
|
|
2280
2319
|
readonly gem: typeof PROTOCOL;
|
|
2281
2320
|
readonly type: "gem.screenshot.denied";
|
|
@@ -2333,6 +2372,14 @@ interface GemSettingChange {
|
|
|
2333
2372
|
readonly id: string;
|
|
2334
2373
|
readonly value: boolean | number | string;
|
|
2335
2374
|
}
|
|
2375
|
+
interface GemShareResult {
|
|
2376
|
+
readonly gem: typeof PROTOCOL;
|
|
2377
|
+
readonly type: "gem.shareResult";
|
|
2378
|
+
readonly requestId: string;
|
|
2379
|
+
readonly outcome: "accepted" | "refused";
|
|
2380
|
+
readonly reason?: string;
|
|
2381
|
+
readonly key?: string;
|
|
2382
|
+
}
|
|
2336
2383
|
interface GemPurchaseResult {
|
|
2337
2384
|
readonly gem: typeof PROTOCOL;
|
|
2338
2385
|
readonly type: "gem.purchaseResult";
|
|
@@ -2341,6 +2388,15 @@ interface GemPurchaseResult {
|
|
|
2341
2388
|
readonly reason?: string;
|
|
2342
2389
|
readonly purchaseId?: string;
|
|
2343
2390
|
}
|
|
2391
|
+
interface GemPurchaseSettled {
|
|
2392
|
+
readonly gem: typeof PROTOCOL;
|
|
2393
|
+
readonly type: "gem.purchaseSettled";
|
|
2394
|
+
readonly purchaseKind: "item" | "recipe";
|
|
2395
|
+
readonly targetId: string;
|
|
2396
|
+
readonly catalogId?: string;
|
|
2397
|
+
readonly quantity: number;
|
|
2398
|
+
readonly purchaseId?: string;
|
|
2399
|
+
}
|
|
2344
2400
|
interface GemDeviceSettingsResult {
|
|
2345
2401
|
readonly gem: typeof PROTOCOL;
|
|
2346
2402
|
readonly type: "gem.deviceSettings.result";
|
|
@@ -3004,12 +3060,6 @@ interface GemMatchApi {
|
|
|
3004
3060
|
serve(server: GemMatchServerModule, options?: MatchServeOptions): Promise<MatchHosting>;
|
|
3005
3061
|
connect(options?: MatchConnectOptions): Promise<MatchConnection>;
|
|
3006
3062
|
}
|
|
3007
|
-
type PurchaseRefusalCode = "unknown_currency" | "currency_not_in_game_payable" | "not_purchasable" | "no_price_in_currency" | "busy" | "cancelled" | "insufficient_funds" | "price_mismatch" | "config_version_stale" | "platform_currency_unavailable" | "not_available" | "recipe_locked" | "already_owned" | "recipe_on_cooldown" | "recipe_max_uses_exceeded" | "item_max_stack_exceeded" | "recipe_costs_unmet" | "quantity_invalid" | "error";
|
|
3008
|
-
declare class PurchaseRefusal extends RangeError {
|
|
3009
|
-
readonly code: Extract<PurchaseRefusalCode, "unknown_currency" | "not_purchasable" | "no_price_in_currency" | "quantity_invalid">;
|
|
3010
|
-
readonly retryable: false;
|
|
3011
|
-
constructor(code: Extract<PurchaseRefusalCode, "unknown_currency" | "not_purchasable" | "no_price_in_currency" | "quantity_invalid">, message: string);
|
|
3012
|
-
}
|
|
3013
3063
|
interface PurchaseRequest {
|
|
3014
3064
|
kind: "item" | "recipe";
|
|
3015
3065
|
targetId: string;
|
|
@@ -3026,6 +3076,14 @@ type PurchaseOutcome = {
|
|
|
3026
3076
|
};
|
|
3027
3077
|
interface PurchaseApi {
|
|
3028
3078
|
request(req: PurchaseRequest): Promise<PurchaseOutcome>;
|
|
3079
|
+
onSettled(listener: (settlement: PurchaseSettlement) => void): () => void;
|
|
3080
|
+
}
|
|
3081
|
+
interface PurchaseSettlement {
|
|
3082
|
+
readonly kind: "item" | "recipe";
|
|
3083
|
+
readonly targetId: string;
|
|
3084
|
+
readonly catalogId?: string;
|
|
3085
|
+
readonly quantity: number;
|
|
3086
|
+
readonly purchaseId: string;
|
|
3029
3087
|
}
|
|
3030
3088
|
interface Avatar3dPurchaseRequest {
|
|
3031
3089
|
itemId: string;
|
|
@@ -3120,8 +3178,11 @@ interface FrameCallbacks {
|
|
|
3120
3178
|
onRelayDraining?(msg: GemRelayDraining): void;
|
|
3121
3179
|
onDedicatedEvent?(msg: GemDedicatedEvent): void;
|
|
3122
3180
|
onClusterTarget?(msg: GemClusterTarget): void;
|
|
3181
|
+
onGraphicsRoutes?(msg: GemGraphicsRoutes): void;
|
|
3123
3182
|
onPartyResult?(msg: GemPartyResult): void;
|
|
3124
3183
|
onPurchaseResult?(msg: GemPurchaseResult): void;
|
|
3184
|
+
onPurchaseSettled?(msg: GemPurchaseSettled): void;
|
|
3185
|
+
onShareResult?(msg: GemShareResult): void;
|
|
3125
3186
|
onDeviceSettings?(msg: GemDeviceSettings): void;
|
|
3126
3187
|
onDeviceSettingsResult?(msg: GemDeviceSettingsResult): void;
|
|
3127
3188
|
onAdResult?(msg: GemAdResult): void;
|
|
@@ -3188,7 +3249,7 @@ declare class GemFrame {
|
|
|
3188
3249
|
requestShare(params: ReadonlyArray<{
|
|
3189
3250
|
readonly key: string;
|
|
3190
3251
|
readonly value: string;
|
|
3191
|
-
}
|
|
3252
|
+
}>, requestId?: string): boolean;
|
|
3192
3253
|
requestAvatarPicker(tab?: "2d" | "3d"): boolean;
|
|
3193
3254
|
requestVibrate(pattern: readonly number[]): boolean;
|
|
3194
3255
|
reportFrameStats(stats: {
|
|
@@ -3200,7 +3261,7 @@ declare class GemFrame {
|
|
|
3200
3261
|
signal(signal: string, matchId: string, data: Record<string, unknown>): void;
|
|
3201
3262
|
dedicatedOffer(matchId: string, sdp: string, intent: GemDedicatedOffer["intent"]): void;
|
|
3202
3263
|
requestParty(requestId: string): boolean;
|
|
3203
|
-
requestPurchase(requestId: string, purchaseKind: "item" | "recipe", targetId: string, currencySlug: string, quantity?: number, catalogId?: string): boolean;
|
|
3264
|
+
requestPurchase(requestId: string, purchaseKind: "item" | "recipe", targetId: string, currencySlug: string, quantity?: number, catalogId?: string, origin?: "sheet" | "direct_refused"): boolean;
|
|
3204
3265
|
requestAvatar3dPurchase(requestId: string, itemId: string, currencySlug: string): boolean;
|
|
3205
3266
|
putDeviceSettings(requestId: string, settings: Readonly<Record<string, unknown>>): boolean;
|
|
3206
3267
|
requestAd(requestId: string, placement: string, format: "interstitial" | "rewarded"): boolean;
|
|
@@ -3224,9 +3285,14 @@ declare class GemFrame {
|
|
|
3224
3285
|
interface ShareRequest {
|
|
3225
3286
|
readonly params?: Readonly<Record<string, string>>;
|
|
3226
3287
|
}
|
|
3288
|
+
declare class ShareRefusal extends Error {
|
|
3289
|
+
readonly reason: string;
|
|
3290
|
+
readonly key?: string;
|
|
3291
|
+
constructor(reason: string, key?: string);
|
|
3292
|
+
}
|
|
3227
3293
|
interface ShareApi {
|
|
3228
3294
|
readonly available: boolean;
|
|
3229
|
-
request(request?: ShareRequest): void
|
|
3295
|
+
request(request?: ShareRequest): Promise<void>;
|
|
3230
3296
|
}
|
|
3231
3297
|
type ArcadeOutcomeKind = "ok" | "declined" | "unavailable";
|
|
3232
3298
|
interface ArcadeOutcome {
|
|
@@ -3600,6 +3666,7 @@ interface Gem {
|
|
|
3600
3666
|
readonly gameConfig: GameConfigApi;
|
|
3601
3667
|
readonly purchases: PurchaseApi;
|
|
3602
3668
|
readonly deviceSettings: DeviceSettingsApi;
|
|
3669
|
+
readonly graphics: GraphicsApi;
|
|
3603
3670
|
readonly moments: MomentsApi;
|
|
3604
3671
|
readonly ads: AdsApi;
|
|
3605
3672
|
readonly account: AccountApi;
|
|
@@ -3662,4 +3729,4 @@ interface ExitAnalytics {
|
|
|
3662
3729
|
}
|
|
3663
3730
|
declare function leaveAndExit(rooms: ExitRooms, bridge: ExitBridge | null, reason?: string, analytics?: ExitAnalytics): Promise<void>;
|
|
3664
3731
|
declare function createGem(options?: GemOptions): Gem;
|
|
3665
|
-
export { ARCADE_EMBEDDERS, AVATAR_RIGS, type AccountApi, type AdFormat, type AdOutcome, type AdOutcomeKind, type AdRequest, type AdsApi, AnalyticsApi, type AnalyticsFlushOptions, type AnalyticsFlushResult, type AnalyticsOptions, type AnalyticsRejection, type AnalyticsValue, type AppLinksOutcome, type AppListing, type AppStore, type ArcadeApi, type ArcadeAvailability, type ArcadeOffer, type ArcadeOutcome, type ArcadeOutcomeKind, AuthError, type AuthFailure, type AuthState, type Avatar3dFamily, type Avatar3dOffer, type Avatar3dPrice, type Avatar3dPurchaseRequest, type AvatarRigNode, type AvatarRigs, type Avatars3dApi, type BootMark, type BootTimeline, type BrandingApi, type BrandingAsset, type BrandingAssetOptions, type BrandingCurrency, type BrandingImageOptions, type BrandingList, type BrandingLookup, type BrandingTheme, type BrandingVariant, type Challenge, type ChallengeWindow, ChallengesApi, type ConfiguredPurchasePayment, type ConfiguredPurchaseRequest, type ConfiguredPurchaseResult, type ControlsApi, DEVICE_SETTINGS_MAX_BYTES, DedicatedServerError, type DedicatedServerFailure, type DedicatedServerSession, type DevToolsOpener, type DeviceSettings, type DeviceSettingsApi, type DeviceSettingsPutOutcome, type DirectPurchaseRequest, type DirectPurchaseResult, type EarnAllowance, type EarnAllowanceEvent, type EarnAllowancePeriod, type EarnAllowanceReadOptions, type EntityLeaderboard, type EntityLeaderboardEntry, type EntityLeaderboardOptions, type EntityType, type ExitAnalytics, type ExitBridge, type ExitRooms, type FrameState, type Friend, type FriendChallenge, FriendChallengeError, type FriendChallengeErrorCode, type FriendChallengeOutcome, type FriendChallengeOutcomeKind, type FriendChallengeRequest, type FriendChallengesPage, FriendsApi, type FriendsPage, type FunctionFailure, type FunctionInvokeOptions, type FunctionResult, FunctionsApi, type GameCard, type GameConfig, type GameMenu, type GameMenuItem, type GamePass, type GameServerLink, type GameSettingsApi, type Gem, GemApiError, type GemAudioChannels, GemClient, type GemCohort, type GemCohorts, GemConfigError, type GemControlBox, type GemCorner, type GemDevTools, GemFrame, GemFunctionError, type GemGameChoiceSetting, type GemGameSetting, type GemGameSettingBase, type GemGameSettingChange, type GemGameSettingIcon, type GemGameSettingOption, type GemGameSettingValue, type GemGameSliderSetting, type GemGameToggleSetting, type GemGraphicsQuality, type GemIdentity, type GemInsets, type GemLook, type GemLookBase, type GemLookDelta, type GemLookOptions, type GemLookSpeed, type GemMatchApi, type GemMatchServerModule, type GemOptions, type GemPlayer, type GemPrefs, type GemRecommendedSettings, type GemReservedArea, GemSaveError, type GemServerBundle, type GemServerFactory, type GemServerHost, type GemServerHostProfile, type GemServerLifecycle, type GemTerminationNotice, GemUnframedError, type GemViewport, type GetLeaderboardOptions, type JoinWelcome, type Leaderboard, type LeaderboardEntry, type LeaderboardPeriod, LeaderboardsApi, type ListChallengesOptions, type ListFriendChallengesOptions, type ListFriendsOptions, MAX_PERIODS_BACK, type MatchConnectOptions, type MatchConnection, type MatchHosting, type MatchHostingMode, type MatchServeOptions, type MatchTransport, type MenuStyle, type MessageMeta, type MomentKind, type MomentResult, type MomentSignal, type MomentsApi, type MultiTransportSession, PLATFORM_EVENTS, type PassesApi, type PassesEvent, type PeriodOptions, PlatformApi, PlatformCurrenciesApi, type PlatformCurrency, type PlatformCurrencyAccess, type PlatformCurrencyPurchasePayment, type PlatformCurrencyPurchaseRequest, type PlatformCurrencyPurchaseResult, type PlatformCurrencyReadOptions, PlatformEarnAllowanceApi, type PlatformEventName, type PlayerBadge, type PlayerBoost, type PlayerBoostMultiplier, type PlayerIdentity, type PlayerProfile, type PlayerScope, PlayerText, type ProfileCallOptions, type ProfileShowcaseEntry, ProfilesApi, type PurchaseApi, type PurchaseOptions, type PurchaseOutcome, PurchaseRefusal, type PurchaseRefusalCode, type PurchaseRequest, type PutBytesOptions, type PutSaveOptions, type RankedRow, type RecipeAvailability, type RecipeLock, type RewardCue, type RewardedStatus, type SavePage, type SaveRecord, type SendOptions$1 as SendOptions, type ServerTokenGrant, type SessionEndReason, type ShareApi, type ShareRequest, ShowcaseApi, type ShowcaseCallOptions, type ShowcaseFriendEntry, type ShowcaseFriends, type ShowcaseValue, type SignInOutcome, type SignInOutcomeKind, type SimilarGamesOutcome, type SnapshotCurrency, type SnapshotItem, type StoreApi, type StoreOffersOutcome, type StoreSettlement, type TransportAdvert, type TransportKind, TransportRefusal, UNRELIABLE_CHANNEL_LABEL, type VibrationApi, type WalletVisibleOptions, type WornAvatar3d, asPlayerText, createBootTimeline, createGem, experimentSelection, leaveAndExit, mapIdentity, markOnResolve, platformIconUrl, presentJoinCredential, readTemplateTransports, readTransportAdvert, reportOnResolve, text, webTransportAvailable };
|
|
3732
|
+
export { ARCADE_EMBEDDERS, AVATAR_RIGS, type AccountApi, type AdFormat, type AdOutcome, type AdOutcomeKind, type AdRequest, type AdsApi, AnalyticsApi, type AnalyticsFlushOptions, type AnalyticsFlushResult, type AnalyticsOptions, type AnalyticsRejection, type AnalyticsValue, type AppLinksOutcome, type AppListing, type AppStore, type ArcadeApi, type ArcadeAvailability, type ArcadeOffer, type ArcadeOutcome, type ArcadeOutcomeKind, AuthError, type AuthFailure, type AuthState, type Avatar3dFamily, type Avatar3dOffer, type Avatar3dPrice, type Avatar3dPurchaseRequest, type AvatarRigNode, type AvatarRigs, type Avatars3dApi, type BootMark, type BootTimeline, type BrandingApi, type BrandingAsset, type BrandingAssetOptions, type BrandingCurrency, type BrandingImageOptions, type BrandingList, type BrandingLookup, type BrandingTheme, type BrandingVariant, type Challenge, type ChallengeWindow, ChallengesApi, type ConfiguredPurchasePayment, type ConfiguredPurchaseRequest, type ConfiguredPurchaseResult, type ControlsApi, DEVICE_SETTINGS_MAX_BYTES, DedicatedServerError, type DedicatedServerFailure, type DedicatedServerSession, type DevToolsOpener, type DeviceSettings, type DeviceSettingsApi, type DeviceSettingsPutOutcome, type DirectPurchaseRequest, type DirectPurchaseResult, type EarnAllowance, type EarnAllowanceEvent, type EarnAllowancePeriod, type EarnAllowanceReadOptions, type EntityLeaderboard, type EntityLeaderboardEntry, type EntityLeaderboardOptions, type EntityType, type ExitAnalytics, type ExitBridge, type ExitRooms, type FrameState, type Friend, type FriendChallenge, FriendChallengeError, type FriendChallengeErrorCode, type FriendChallengeOutcome, type FriendChallengeOutcomeKind, type FriendChallengeRequest, type FriendChallengesPage, FriendsApi, type FriendsPage, type FunctionFailure, type FunctionInvokeOptions, type FunctionResult, FunctionsApi, type GameCard, type GameConfig, type GameMenu, type GameMenuItem, type GamePass, type GameServerLink, type GameSettingsApi, type Gem, GemApiError, type GemAudioChannels, GemClient, type GemCohort, type GemCohorts, GemConfigError, type GemControlBox, type GemCorner, type GemDevTools, GemFrame, GemFunctionError, type GemGameChoiceSetting, type GemGameSetting, type GemGameSettingBase, type GemGameSettingChange, type GemGameSettingIcon, type GemGameSettingOption, type GemGameSettingValue, type GemGameSliderSetting, type GemGameToggleSetting, type GemGraphicsQuality, type GemGraphicsRoute, type GemGraphicsRouteEntry, type GemIdentity, type GemInsets, type GemLook, type GemLookBase, type GemLookDelta, type GemLookOptions, type GemLookSpeed, type GemMatchApi, type GemMatchServerModule, type GemOptions, type GemPlayer, type GemPreferredRoute, type GemPrefs, type GemRecommendedSettings, type GemReservedArea, GemSaveError, type GemServerBundle, type GemServerFactory, type GemServerHost, type GemServerHostProfile, type GemServerLifecycle, type GemTerminationNotice, GemUnframedError, type GemViewport, type GetLeaderboardOptions, type GraphicsApi, type JoinWelcome, type Leaderboard, type LeaderboardEntry, type LeaderboardPeriod, LeaderboardsApi, type ListChallengesOptions, type ListFriendChallengesOptions, type ListFriendsOptions, MAX_PERIODS_BACK, type MatchConnectOptions, type MatchConnection, type MatchHosting, type MatchHostingMode, type MatchServeOptions, type MatchTransport, type MenuStyle, type MessageMeta, type MomentKind, type MomentResult, type MomentSignal, type MomentsApi, type MultiTransportSession, PLATFORM_EVENTS, type PassesApi, type PassesEvent, type PeriodOptions, PlatformApi, PlatformCurrenciesApi, type PlatformCurrency, type PlatformCurrencyAccess, type PlatformCurrencyPurchasePayment, type PlatformCurrencyPurchaseRequest, type PlatformCurrencyPurchaseResult, type PlatformCurrencyReadOptions, PlatformEarnAllowanceApi, type PlatformEventName, type PlayerBadge, type PlayerBoost, type PlayerBoostMultiplier, type PlayerIdentity, type PlayerProfile, type PlayerScope, PlayerText, type PreferredRouteOptions, type ProfileCallOptions, type ProfileShowcaseEntry, ProfilesApi, type PurchaseApi, type PurchaseOptions, type PurchaseOutcome, PurchaseRefusal, type PurchaseRefusalCode, type PurchaseRequest, type PurchaseSettlement, type PutBytesOptions, type PutSaveOptions, type RankedRow, type RecipeAvailability, type RecipeLock, type RewardCue, type RewardedStatus, type SavePage, type SaveRecord, type SendOptions$1 as SendOptions, type ServerTokenGrant, type SessionEndReason, type ShareApi, ShareRefusal, type ShareRequest, ShowcaseApi, type ShowcaseCallOptions, type ShowcaseFriendEntry, type ShowcaseFriends, type ShowcaseValue, type SignInOutcome, type SignInOutcomeKind, type SimilarGamesOutcome, type SnapshotCurrency, type SnapshotItem, type StoreApi, type StoreOffersOutcome, type StoreSettlement, type TransportAdvert, type TransportKind, TransportRefusal, UNRELIABLE_CHANNEL_LABEL, type VibrationApi, type WalletVisibleOptions, type WornAvatar3d, asPlayerText, createBootTimeline, createGem, experimentSelection, leaveAndExit, mapIdentity, markOnResolve, platformIconUrl, presentJoinCredential, readTemplateTransports, readTransportAdvert, reportOnResolve, text, webTransportAvailable };
|