@series-inc/rundot-game-sdk 5.23.0 → 5.24.0-beta.2

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.
Files changed (74) hide show
  1. package/dist/{AdsApi-DksgfqAT.d.ts → AdsApi-CDJtVB3I.d.ts} +237 -3
  2. package/dist/{LeaderboardApi-DoKIAAHN.d.ts → LeaderboardApi-CrWxakrr.d.ts} +96 -3
  3. package/dist/{SyncplayRoomTransport-7F_e94v9.d.ts → SyncplayRoomTransport-BZFFN-il.d.ts} +1 -1
  4. package/dist/{chunk-KQ3J4GC4.js → chunk-3MDWJBCR.js} +362 -530
  5. package/dist/chunk-3MDWJBCR.js.map +1 -0
  6. package/dist/{chunk-EFEOX7D7.js → chunk-7RIEVFDA.js} +623 -125
  7. package/dist/chunk-7RIEVFDA.js.map +1 -0
  8. package/dist/{chunk-TIOJVMES.js → chunk-DMKR7SVQ.js} +51 -3
  9. package/dist/chunk-DMKR7SVQ.js.map +1 -0
  10. package/dist/chunk-N5MASNTK.js +33015 -0
  11. package/dist/chunk-N5MASNTK.js.map +1 -0
  12. package/dist/{chunk-VTEO4M7E.js → chunk-WFRNUODW.js} +57 -19
  13. package/dist/chunk-WFRNUODW.js.map +1 -0
  14. package/dist/chunk-YQEDG3Z2.js +118 -0
  15. package/dist/chunk-YQEDG3Z2.js.map +1 -0
  16. package/dist/{chunk-5JSI7LA6.js → chunk-YSK7K2OH.js} +2506 -3019
  17. package/dist/chunk-YSK7K2OH.js.map +1 -0
  18. package/dist/dist-AQIWY6KR.js +3636 -0
  19. package/dist/dist-AQIWY6KR.js.map +1 -0
  20. package/dist/host-http.d.ts +2 -1
  21. package/dist/host-http.js +2 -2
  22. package/dist/{index-BJHZ_Q3g.d.ts → index-BrvMOxG0.d.ts} +52 -55
  23. package/dist/index.d.ts +65 -35
  24. package/dist/index.js +3 -3
  25. package/dist/multiplayer-service-BPEWIL4F.d.ts +1834 -0
  26. package/dist/playground/index.js +343 -12
  27. package/dist/playground/index.js.map +1 -1
  28. package/dist/rundot-game-api/index.d.ts +4 -3
  29. package/dist/rundot-game-api/index.js +6 -3
  30. package/dist/rundot-game-api/index.js.map +1 -1
  31. package/dist/{session-promotion-CN7lr85d.d.ts → session-promotion-BMoIRgKe.d.ts} +3 -3
  32. package/dist/syncplay/browser.d.ts +1209 -1730
  33. package/dist/syncplay/browser.js +18079 -20342
  34. package/dist/syncplay/browser.js.map +1 -1
  35. package/dist/syncplay/creator.d.ts +5 -5
  36. package/dist/syncplay/creator.js +2 -2
  37. package/dist/syncplay/index.d.ts +2 -2
  38. package/dist/syncplay/index.js +2 -2
  39. package/dist/syncplay/node.d.ts +3 -774
  40. package/dist/syncplay/node.js +5527 -32042
  41. package/dist/syncplay/node.js.map +1 -1
  42. package/dist/syncplay/testing.d.ts +4908 -0
  43. package/dist/syncplay/testing.js +3808 -0
  44. package/dist/syncplay/testing.js.map +1 -0
  45. package/dist/{types-BXxDmID0.d.ts → types-BV8uchSD.d.ts} +21 -2
  46. package/dist/vite/index.d.ts +13 -27
  47. package/dist/vite/index.js +70 -0
  48. package/dist/vite/index.js.map +1 -1
  49. package/docs/rundot-developer-platform/api/AI.md +43 -1
  50. package/docs/rundot-developer-platform/api/ANALYTICS.md +1 -1
  51. package/docs/rundot-developer-platform/api/FILES.md +20 -1
  52. package/docs/rundot-developer-platform/api/LEADERBOARD.md +69 -0
  53. package/docs/rundot-developer-platform/api/LIVEOPS.md +15 -1
  54. package/docs/rundot-developer-platform/api/NOTIFICATIONS.md +92 -221
  55. package/docs/rundot-developer-platform/api/SHARED_ASSETS.md +4 -3
  56. package/docs/rundot-developer-platform/api/SHARING.md +68 -1
  57. package/docs/rundot-developer-platform/api/SHOP.md +2 -0
  58. package/docs/rundot-developer-platform/api/SPRITE_GEN.md +5 -3
  59. package/docs/rundot-developer-platform/api/SYNCPLAY-MOVEMENT.md +2 -2
  60. package/docs/rundot-developer-platform/api/SYNCPLAY-PHYSICS.md +149 -1
  61. package/docs/rundot-developer-platform/api/SYNCPLAY.md +77 -4
  62. package/docs/rundot-developer-platform/api/UGC.md +48 -0
  63. package/docs/rundot-developer-platform/api/VIDEO_GEN.md +41 -1
  64. package/docs/rundot-developer-platform/cli-reference.md +13 -8
  65. package/docs/rundot-developer-platform/error-handling.md +40 -0
  66. package/docs/rundot-developer-platform/playground.md +106 -1
  67. package/package.json +7 -1
  68. package/dist/chunk-5JSI7LA6.js.map +0 -1
  69. package/dist/chunk-EFEOX7D7.js.map +0 -1
  70. package/dist/chunk-KQ3J4GC4.js.map +0 -1
  71. package/dist/chunk-TIOJVMES.js.map +0 -1
  72. package/dist/chunk-VTEO4M7E.js.map +0 -1
  73. package/dist/chunk-XJCC6PWO.js +0 -46
  74. package/dist/chunk-XJCC6PWO.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { M as LeaderboardApi, I as ImageGenApi, A as AudioGenApi, V as VideoGenApi, q as SpriteGenApi, T as ThreeDGenApi } from './LeaderboardApi-DoKIAAHN.js';
1
+ import { $ as ProviderErrorDetail, M as LeaderboardApi, I as ImageGenApi, A as AudioGenApi, V as VideoGenApi, q as SpriteGenApi, T as ThreeDGenApi } from './LeaderboardApi-CrWxakrr.js';
2
2
  import { M as MultiplayerApi } from './MultiplayerApi-nnrGTTcO.js';
3
3
 
4
4
  interface StorageApi {
@@ -35,6 +35,8 @@ interface RpcResponse {
35
35
  code?: string;
36
36
  /** Human-readable cause from an upstream provider, when available. */
37
37
  detail?: string;
38
+ /** Structured provider rejection detail, when available. */
39
+ errorDetail?: ProviderErrorDetail;
38
40
  stack?: string;
39
41
  };
40
42
  }
@@ -239,10 +241,17 @@ interface ScheduleRCSInput {
239
241
  /** Seconds from now; mutually exclusive with triggerAt; max 7 days */
240
242
  delaySeconds?: number;
241
243
  }
242
- type ScheduleRCSStatus = 'pending' | 'sent' | 'dry_run' | 'failed';
244
+ /**
245
+ * `skipped` — nothing was scheduled for a benign reason (e.g. the user is not
246
+ * RCS-reachable, or an identical message is already scheduled). Distinct from
247
+ * `failed`, which indicates a hard scheduling error. See `ScheduleRCSResult.reason`.
248
+ */
249
+ type ScheduleRCSStatus = 'pending' | 'sent' | 'dry_run' | 'skipped' | 'failed';
243
250
  interface ScheduleRCSResult {
244
251
  scheduleId: string;
245
252
  status: ScheduleRCSStatus;
253
+ /** Why the schedule was skipped. Only set when `status === 'skipped'`. */
254
+ reason?: string;
246
255
  /**
247
256
  * Reserved for a future schedule-status API. Not returned by
248
257
  * `scheduleRCSAsync` in v1 (rate-cap deferral is handled internally at
@@ -290,14 +299,50 @@ interface RequestRCSOptInResult {
290
299
  */
291
300
  newlySubscribed: boolean;
292
301
  }
302
+ type SubmitMessageChannel = 'local' | 'rcs';
303
+ interface SubmitMessageInput {
304
+ channels: SubmitMessageChannel[];
305
+ title?: string;
306
+ body?: string;
307
+ templateId?: string;
308
+ params?: Record<string, string>;
309
+ collapseKey?: string;
310
+ ctaUrl?: string;
311
+ continuationParams?: Record<string, string>;
312
+ image?: string;
313
+ triggerAt?: string;
314
+ delaySeconds?: number;
315
+ payload?: Record<string, unknown>;
316
+ notificationId?: string;
317
+ priority?: number;
318
+ groupId?: string;
319
+ }
320
+ type SubmitMessageResultChannel = 'local' | 'rcs' | 'inbox';
321
+ interface SubmitMessageChannelResult {
322
+ channel: SubmitMessageResultChannel;
323
+ status: 'scheduled' | 'skipped';
324
+ id?: string;
325
+ reason?: string;
326
+ }
327
+ interface SubmitMessageResult {
328
+ messageId: string;
329
+ results: SubmitMessageChannelResult[];
330
+ }
293
331
  interface NotificationsApi {
332
+ /**
333
+ * @deprecated Use `submitMessageAsync({ channels: ['local'], ... })` instead.
334
+ */
294
335
  scheduleAsync(title: string, body: string, seconds: number, notificationId?: string, options?: ScheduleNotificationOptions): Promise<string | null>;
295
336
  cancelNotification(notificationId: string): Promise<boolean>;
296
337
  getAllScheduledLocalNotifications(): Promise<ScheduleLocalNotification[]>;
297
338
  isLocalNotificationsEnabled(): Promise<boolean>;
298
339
  setLocalNotificationsEnabled(enabled: boolean): Promise<boolean>;
299
340
  getRCSAvailableAsync(): Promise<RCSAvailabilityStatus>;
341
+ /**
342
+ * @deprecated Use `submitMessageAsync({ channels: ['rcs'], ... })` instead.
343
+ */
300
344
  scheduleRCSAsync(input: ScheduleRCSInput): Promise<ScheduleRCSResult>;
345
+ submitMessageAsync(input: SubmitMessageInput): Promise<SubmitMessageResult>;
301
346
  /**
302
347
  * Trigger the platform-owned RCS opt-in modal. The host shows one of the
303
348
  * three modal states depending on whether the user has a phone on file and
@@ -894,6 +939,25 @@ type AiChatCompletionStreamChunk = {
894
939
  finishReason: string;
895
940
  usage: AiChatCompletionData['usage'];
896
941
  };
942
+ /**
943
+ * Request for a templated ("prompt") completion. Games whose textGen config is
944
+ * `mode: 'templated'` don't send raw `model`/`system`/`messages` — they invoke
945
+ * a server-authored prompt by id. The server owns the model, the system
946
+ * prompt, and any `{{var}}` slots; the game contributes only the player's
947
+ * turn via `input`.
948
+ */
949
+ interface PromptCompletionRequest {
950
+ /** Id of a server-authored prompt declared in rundot/textGen.config.json. */
951
+ promptId: string;
952
+ /** The player's turn; isolation-wrapped server-side. Text-only in v1. */
953
+ input?: string;
954
+ }
955
+ /**
956
+ * Builds the wire object for a templated prompt call explicitly (never
957
+ * spreads the caller's object) so only the templated-call fields ride the
958
+ * wire. Shared by every AiApi transport.
959
+ */
960
+ declare function toPromptWireRequest(request: PromptCompletionRequest): PromptCompletionRequest;
897
961
  interface AiChatCompletionStreamOptions {
898
962
  /**
899
963
  * Caller-supplied AbortSignal. Aborting causes the iterable to stop
@@ -975,6 +1039,53 @@ interface AiApi {
975
1039
  * is non-empty.
976
1040
  */
977
1041
  requestChatCompletionStreamAsync(request: AiChatCompletionRequest, options?: AiChatCompletionStreamOptions): AsyncIterable<AiChatCompletionStreamChunk>;
1042
+ /**
1043
+ * Invoke a server-authored prompt by id (templated textGen mode).
1044
+ *
1045
+ * Unlike `requestChatCompletionAsync`, the game does not choose the model
1046
+ * or author the messages — those live server-side in the prompt declared in
1047
+ * `rundot/textGen.config.json`. The optional `input` carries the player's
1048
+ * turn and is isolation-wrapped server-side; it is text-only in v1.
1049
+ *
1050
+ * There are no client-supplied variables in v1: `{{var}}` slots in the
1051
+ * server-side prompt resolve entirely from a trusted server-side bag, so
1052
+ * the call carries nothing to reconcile or sanitize beyond `input`.
1053
+ *
1054
+ * Note: against a templated game, the open-mode
1055
+ * `requestChatCompletionAsync` is rejected with HTTP 403 and error code
1056
+ * `AI_POLICY_DENIED` — use this method instead.
1057
+ *
1058
+ * @example
1059
+ * ```ts
1060
+ * const response = await textGen.requestPromptCompletionAsync({
1061
+ * promptId: 'npc-banter',
1062
+ * input: 'What do you think of the swamp zone?',
1063
+ * })
1064
+ * console.log(response.choices[0].message.content)
1065
+ * ```
1066
+ */
1067
+ requestPromptCompletionAsync(request: PromptCompletionRequest): Promise<AiChatCompletionData>;
1068
+ /**
1069
+ * Streaming sibling of `requestPromptCompletionAsync`. Returns an async
1070
+ * iterable of chunks — the same chunk contract as
1071
+ * `requestChatCompletionStreamAsync` (see its docs for chunk buffering and
1072
+ * cancellation semantics). Cancel by `break`ing out of `for await`, calling
1073
+ * `return()` on the iterator, or aborting the optional `signal`.
1074
+ *
1075
+ * @example
1076
+ * ```ts
1077
+ * const stream = textGen.requestPromptCompletionStreamAsync({
1078
+ * promptId: 'npc-banter',
1079
+ * input: 'Tell me a story.',
1080
+ * })
1081
+ * let text = ''
1082
+ * for await (const chunk of stream) {
1083
+ * if (chunk.type === 'delta') text += chunk.text
1084
+ * if (chunk.type === 'done') console.log('usage', chunk.usage)
1085
+ * }
1086
+ * ```
1087
+ */
1088
+ requestPromptCompletionStreamAsync(request: PromptCompletionRequest, options?: AiChatCompletionStreamOptions): AsyncIterable<AiChatCompletionStreamChunk>;
978
1089
  }
979
1090
 
980
1091
  type TextGenApi = AiApi;
@@ -1695,7 +1806,10 @@ interface RundotGameMessage {
1695
1806
  data?: any;
1696
1807
  error?: string;
1697
1808
  errorCode?: string;
1809
+ /** Legacy flattened provider detail STRING — the field name is wire-frozen. */
1698
1810
  errorDetail?: string;
1811
+ /** Structured provider rejection detail (new wire field; see errors.ts). */
1812
+ errorInfo?: ProviderErrorDetail;
1699
1813
  script?: string;
1700
1814
  };
1701
1815
  instanceId: string;
@@ -2314,6 +2428,25 @@ interface UgcVotingApi {
2314
2428
  */
2315
2429
  getWinners(params?: UgcVoteWinnersListParams): Promise<UgcVoteWinnersResponse>;
2316
2430
  }
2431
+ /**
2432
+ * Strictness of the local profanity check. Mirrors the server's policies:
2433
+ * - 'strict': all 23 languages, obfuscation + fuzzy matching. What the server
2434
+ * applies to UGC, comments, profiles, and game tags.
2435
+ * - 'lenient': exact-match English only. What the server applies to AI
2436
+ * generation prompts.
2437
+ */
2438
+ type UgcCheckTextPolicy = 'strict' | 'lenient';
2439
+ interface UgcCheckTextOptions {
2440
+ /** Defaults to 'strict'. */
2441
+ policy?: UgcCheckTextPolicy;
2442
+ /** Extra words to flag in addition to the built-in dictionaries. */
2443
+ customWords?: string[];
2444
+ }
2445
+ interface UgcCheckTextResult {
2446
+ clean: boolean;
2447
+ /** The matched profane words; empty when clean. */
2448
+ profaneWords: string[];
2449
+ }
2317
2450
  interface UgcRecommendationResponse {
2318
2451
  recommId: string;
2319
2452
  entries: Array<UgcEntry & {
@@ -2417,6 +2550,16 @@ interface UgcApi {
2417
2550
  * @param params Report parameters
2418
2551
  */
2419
2552
  report(params: UgcReportParams): Promise<void>;
2553
+ /**
2554
+ * Check text against the same procedural profanity filter the server runs,
2555
+ * entirely client-side (no network call). Use it as a UX pre-filter before
2556
+ * submitting user text; the server still enforces its own moderation.
2557
+ * Fail-open: internal filter errors resolve to a clean result.
2558
+ * @param text Text to check
2559
+ * @param options Policy ('strict' default | 'lenient') and custom words
2560
+ * @returns Whether the text is clean, plus any matched profane words
2561
+ */
2562
+ checkTextAsync(text: string, options?: UgcCheckTextOptions): Promise<UgcCheckTextResult>;
2420
2563
  /**
2421
2564
  * Get multiple entries by ID in a single request
2422
2565
  * @param params Parameters including array of entry IDs (max 100)
@@ -2593,6 +2736,68 @@ interface CanShareFileResult {
2593
2736
  /** True if the platform supports navigator.share with files. */
2594
2737
  supported: boolean;
2595
2738
  }
2739
+ /** Platforms accepted as a `composeSocialPostAsync` targeting hint. */
2740
+ declare const SOCIAL_COMPOSE_PLATFORMS: readonly ["x", "reddit", "tiktok", "instagram"];
2741
+ type SocialComposePlatform = (typeof SOCIAL_COMPOSE_PLATFORMS)[number];
2742
+ /** Max length for a compose post body, after control characters are stripped. */
2743
+ declare const COMPOSE_POST_MAX_TEXT_LENGTH = 500;
2744
+ /** Max length for a compose post title (used when routed to Reddit). */
2745
+ declare const COMPOSE_POST_MAX_TITLE_LENGTH = 300;
2746
+ /** Valid subreddit names (bare name, no `r/` prefix). */
2747
+ declare const COMPOSE_POST_SUBREDDIT_PATTERN: RegExp;
2748
+ /** Optional image/video attached to a composed post. */
2749
+ interface ComposeSocialPostMedia {
2750
+ /** Same encoding rules as {@link ShareFileOptions.data}. */
2751
+ data: Blob | ArrayBuffer | string;
2752
+ filename: string;
2753
+ mimeType: ShareFileMimeType;
2754
+ }
2755
+ interface ComposeSocialPostOptions {
2756
+ /** Post body / caption. Max 500 characters. */
2757
+ text: string;
2758
+ /**
2759
+ * When present, the host mints a tracked share link (same machinery as
2760
+ * `shareLinkAsync`) and attaches it to the post. There is deliberately no
2761
+ * `url` parameter — games can never inject an arbitrary destination URL.
2762
+ */
2763
+ shareParams?: Record<string, string>;
2764
+ /** Optional image/video, same encoding rules as `shareFileAsync`. */
2765
+ media?: ComposeSocialPostMedia;
2766
+ /**
2767
+ * Optional targeting hint. If the hinted platform can't work on the current
2768
+ * surface, the host degrades to its generic destination chooser instead of
2769
+ * throwing — games never branch on OS/browser/destination support.
2770
+ */
2771
+ platform?: SocialComposePlatform;
2772
+ /** Post title, used only when routed to Reddit. Max 300 characters. */
2773
+ title?: string;
2774
+ /** Target subreddit (bare name, no `r/` prefix), used only when routed to Reddit. */
2775
+ subreddit?: string;
2776
+ /**
2777
+ * OpenGraph metadata for the tracked share link minted from `shareParams`
2778
+ * (same semantics as `shareLinkAsync`). Fields left absent fall back to the
2779
+ * game's values (name/thumbnail). Ignored when `shareParams` is absent — no
2780
+ * link is minted, so there is nothing to attach a preview to.
2781
+ */
2782
+ metadata?: ShareMetadata;
2783
+ }
2784
+ interface ComposeSocialPostResult {
2785
+ /**
2786
+ * True when the user acted on a destination and it actually opened. False
2787
+ * when they dismissed the sheet, cancelled the OS share sheet (web), or
2788
+ * when the destination could not be shown (e.g. a popup blocker — the
2789
+ * composer URL is left on the clipboard — or the game could not leave
2790
+ * fullscreen).
2791
+ *
2792
+ * Native caveat: iOS/Android do not report whether the user cancelled the
2793
+ * system share sheet (same limitation as {@link ShareFileResult.cancelled}),
2794
+ * so share-sheet destinations resolve `completed: true` once the sheet
2795
+ * opens.
2796
+ */
2797
+ completed: boolean;
2798
+ /** Destination that handled the post (e.g. 'x', 'reddit', 'tiktok', 'instagram', 'copy-link', 'more'). */
2799
+ destination?: string;
2800
+ }
2596
2801
  /**
2597
2802
  * Social distribution API used by H5 games.
2598
2803
  *
@@ -2700,6 +2905,25 @@ interface SocialApi {
2700
2905
  * @beta
2701
2906
  */
2702
2907
  canShareFileAsync(): Promise<CanShareFileResult>;
2908
+ /**
2909
+ * Compose a post to an external social platform (X, Reddit, TikTok,
2910
+ * Instagram) through host-owned UI.
2911
+ *
2912
+ * The game passes content only; the host owns the entire
2913
+ * (surface × destination) matrix: it renders a destination sheet, and the
2914
+ * user's tap inside that sheet opens the platform composer (X/Reddit) or the
2915
+ * OS share sheet with the caption pre-copied (TikTok/Instagram). If
2916
+ * `shareParams` is present the host mints a tracked share link and attaches
2917
+ * it to the post.
2918
+ *
2919
+ * This never rejects for "unsupported platform": when the `platform` hint
2920
+ * can't work on the current surface, the host falls back to its generic
2921
+ * destination chooser.
2922
+ *
2923
+ * @beta
2924
+ * @throws If text/title/subreddit/media fail validation.
2925
+ */
2926
+ composeSocialPostAsync(options: ComposeSocialPostOptions): Promise<ComposeSocialPostResult>;
2703
2927
  }
2704
2928
 
2705
2929
  interface FileEntry {
@@ -2889,6 +3113,16 @@ type TransformParams = {
2889
3113
  outputKey: string;
2890
3114
  maxDurationSec: number;
2891
3115
  clientRef?: string;
3116
+ } | {
3117
+ op: 'overlay';
3118
+ input: string;
3119
+ overlay: string;
3120
+ outputKey: string;
3121
+ position?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';
3122
+ scale?: number;
3123
+ margin?: number;
3124
+ opacity?: number;
3125
+ clientRef?: string;
2892
3126
  } | ArchiveExtractParams;
2893
3127
  interface TransformResult {
2894
3128
  jobId: string;
@@ -4485,4 +4719,4 @@ interface AdsApi {
4485
4719
  showInterstitialAd(options?: ShowInterstitialAdOptions): Promise<boolean>;
4486
4720
  }
4487
4721
 
4488
- export { type EnvironmentInfo as $, type AnalyticsApi as A, type BatchRecipeRequirementsResult as B, type NotificationsApi as C, type ScheduleLocalNotification as D, type ScheduleNotificationOptions as E, type RCSAvailabilityStatus as F, type ScheduleRCSInput as G, type Host as H, type ScheduleRCSResult as I, type RequestRCSOptInInput as J, type RequestRCSOptInResult as K, type PopupsApi as L, type ShowToastOptions as M, type NavigationApi as N, type LikeDialogResult as O, type Profile as P, type QuitOptions as Q, type RundotGameAPI as R, type SimulationActiveRunsUpdate as S, type CommentsPanelResult as T, type LikeStateResult as U, type ShowInterstitialAdOptions as V, type ShowRewardedAdOptions as W, type ProfileApi as X, type DeviceApi as Y, type DeviceInfo as Z, type EnvironmentApi as _, type RecipeRequirementQuery as a, type RoomsApi as a$, type SystemApi as a0, type SafeArea as a1, type AddToHomeScreenResult as a2, type CdnApi as a3, type FetchFromCdnOptions as a4, type AssetUrlResult as a5, type TimeApi as a6, type ServerTimeData as a7, type GetFutureTimeOptions as a8, type AiApi as a9, type SimulationApi as aA, type SimulationSlotValidationResult as aB, type SimulationBatchOperation as aC, type SimulationBatchOperationsResult as aD, type SimulationAvailableItem as aE, type SimulationPowerPreview as aF, type SimulationSlotMutationResult as aG, type SimulationSlotContainer as aH, type SimulationAssignment as aI, type SimulationState as aJ, type ExecuteRecipeOptions as aK, type ExecuteRecipeResponse as aL, type CollectRecipeResult as aM, type ResetStateOptions as aN, type ResetStateResult as aO, type GetActiveRunsOptions as aP, type ExecuteScopedRecipeOptions as aQ, type ExecuteScopedRecipeResult as aR, type GetAvailableRecipesOptions as aS, type GetAvailableRecipesResult as aT, type Recipe as aU, type GetBatchRecipeRequirements as aV, type TriggerRecipeChainOptions as aW, type RoomDataUpdate as aX, type RoomMessageEvent as aY, type ProposedMoveEvent as aZ, RundotGameTransport as a_, type AiChatCompletionRequest as aa, type AiChatCompletionData as ab, type AiChatCompletionStreamOptions as ac, type AiChatCompletionStreamChunk as ad, type HapticsApi as ae, HapticFeedbackStyle as af, type GamepadSnapshot as ag, type GamepadConnectionEvent as ah, type Subscription as ai, type GamepadApi as aj, type GamepadLatencyStats as ak, type FeaturesApi as al, type Experiment as am, type LiveOpsApi as an, type LiveOpsConfigResult as ao, type LiveOpsRawConfig as ap, type LiveOpsSection as aq, type LifecycleApi as ar, type SleepCallback as as, type AwakeCallback as at, type PauseCallback as au, type ResumeCallback as av, type QuitCallback as aw, type BackButtonCallback as ax, type IdentityChangedCallback as ay, type IdentityChangedEvent as az, type RecipeRequirementResult as b, type AdminVideoGenApi as b$, type CreateRoomOptions as b0, type JoinOrCreateRoomOptions as b1, type JoinOrCreateResult as b2, type ListRoomsOptions as b3, type UpdateRoomDataOptions as b4, type RoomMessageRequest as b5, type StartRoomGameOptions as b6, type ProposeMoveRequest as b7, type ProposeMoveResult as b8, type ValidateMoveVerdict as b9, type QRCodeResult as bA, type ShareClickData as bB, type ShareFileOptions as bC, type ShareFileResult as bD, type CanShareFileResult as bE, type EntitlementApi as bF, type Entitlement as bG, type LedgerEntry as bH, type StatsApi as bI, type GrantInfo as bJ, type CollectiblesApi as bK, type CollectibleCard as bL, type VipClaimResult as bM, type ShopApi as bN, type StorefrontResponse as bO, type StorefrontItem as bP, type ShopPurchaseResponse as bQ, type ShopOrderHistoryResponse as bR, type PromptLoginResult as bS, type AccessTier as bT, type AccessGateApi as bU, type TextGenApi as bV, type UgcApi as bW, type VideoApi as bX, type AppApi as bY, type AdminUgcApi as bZ, type AdminImageGenApi as b_, type ValidateMoveResult as ba, type RoomSubscriptionOptions as bb, type LoggingApi as bc, type IapApi as bd, type SpendCurrencyOptions as be, type SpendCurrencyResult as bf, type SubscriptionTier as bg, type RunSubscriptionsResponse as bh, type SubscriptionInterval as bi, type PurchaseSubscriptionResponse as bj, type OpenStoreResult as bk, type LoadEmbeddedAssetsResponse as bl, type SharedAssetsApi as bm, type CreditsApi as bn, type CreditsBillingContext as bo, type CreditBalance as bp, type CreditSubscription as bq, type CreditPlansCatalog as br, type OpenPaywallOptions as bs, type CreditsPurchaseResult as bt, type Unsubscribe as bu, type PreloaderApi as bv, type SocialApi as bw, type ShareMetadata as bx, type ShareLinkResult as by, type SocialQRCodeOptions as bz, type RundotGameAvailableRecipe as c, type AdminVideoGenBrowseResponse as c$, type AdminSpriteGenApi as c0, type AdminAudioGenApi as c1, type AdminThreeDGenApi as c2, type AppRole as c3, type ResolveLaunchIntentOptions as c4, type LaunchIntent as c5, type ReleaseNote as c6, type AdminUgcBrowseParams as c7, type AdminUgcBrowseResponse as c8, type AdminUgcListReportsParams as c9, type CaptureConsent as cA, type StartClipRecordingOptions as cB, type ClipBlob as cC, type ClipsSupport as cD, type ClipPersistOptions as cE, type ClipResult as cF, type UgcEntry as cG, type CaptureConsentStatus as cH, AccessDeniedError as cI, type AdminGenApi as cJ, type AdminImageGenBrowseParams as cK, type AdminImageGenBrowseResponse as cL, type AdminImageGenListReportsParams as cM, type AdminImageGenListReportsResponse as cN, type AdminImageGenResolveAction as cO, type AdminSpriteGenBrowseParams as cP, type AdminSpriteGenBrowseResponse as cQ, type AdminSpriteGenListReportsParams as cR, type AdminSpriteGenListReportsResponse as cS, type AdminSpriteGenResolveAction as cT, type AdminThreeDGenBrowseParams as cU, type AdminThreeDGenBrowseResponse as cV, type AdminThreeDGenListReportsParams as cW, type AdminThreeDGenListReportsResponse as cX, type AdminThreeDGenResolveAction as cY, type AdminUgcEntry as cZ, type AdminVideoGenBrowseParams as c_, type AdminUgcListReportsResponse as ca, type AdminUgcResolveAction as cb, type AdminGenBrowseParams as cc, type AdminGenBrowseResponse as cd, type ImageGenEntry as ce, type AdminGenListReportsParams as cf, type AdminGenListReportsResponse as cg, type ImageGenReport as ch, type AdminGenResolveAction as ci, type SpriteGenEntry as cj, type SpriteGenReport as ck, type ThreeDGenEntry as cl, type ThreeDGenReport as cm, type Avatar3dApi as cn, type AssetManifest as co, type Avatar3dConfig as cp, type ShowEditorOptions as cq, type Avatar3dEdits as cr, type AdsApi as cs, type RawEnvironmentInfo as ct, type SharedStorageHostApi as cu, type FilesApi as cv, type ClipsApi as cw, type AttributionApi as cx, type InitializationContext as cy, type InitializationOptions as cz, type RundotGameCollectRecipeResult as d, type RoomMessagePayload as d$, type AdminVideoGenListReportsParams as d0, type AdminVideoGenListReportsResponse as d1, type AdminVideoGenResolveAction as d2, type AiContentBlock as d3, type AiImageContent as d4, type AiImageUrlContent as d5, type AiMessage as d6, type AiResponseFormat as d7, type AiTextContent as d8, type AiToolResultContent as d9, type IdentityChangeReason as dA, type InboundForKeyEntry as dB, type InboundMethodIds as dC, type InboundStorageApi as dD, type IsPlayerSubscribedRequest as dE, type JoinOrCreateRoomEnvelopeResponse as dF, type JoinRoomMatchCriteria as dG, type LaunchIntentKind as dH, type LiveOpsOverride as dI, type LoadEmbeddedAssetsRequest as dJ, MockAvatarApi as dK, type NotificationTriggerInput as dL, type OnNotificationCallback as dM, type OnRequestCallback as dN, type OnResponseCallback as dO, type PlatformCapabilities as dP, type ProposedMovePayload as dQ, type PurchaseSubscriptionRequest as dR, type RCSAvailabilityReason as dS, type RCSOptInStatus as dT, ROOM_GAME_PHASES as dU, type RecipeInfo as dV, type ReleaseType as dW, type ResolvedLiveOps as dX, type RoomEnvelopeResponse as dY, type RoomGamePhase as dZ, type RoomMessageEventType as d_, type AiToolUseContent as da, type Asset as db, type AudioGenEntry as dc, type AudioGenReport as dd, CLIP_CONTENT_TYPE as de, CREDITS_EXHAUSTED_CODE as df, type Category as dg, type ClipAudioOptions as dh, type ClipCameraOptions as di, type ClipPipLayout as dj, type ClipPipPosition as dk, type CreditFreeDailyInfo as dl, type CreditPlan as dm, type CreditTopUpPack as dn, type CreditsBilledTo as dp, CreditsExhaustedError as dq, type CreditsExhaustedErrorInfo as dr, type CreditsPurchaseOutcome as ds, GAMEPAD_BUTTON_NAMES as dt, type GamepadAxes as du, type GamepadButtonName as dv, type GamepadButtonState as dw, type GamepadSource as dx, type GetSubscriptionsForTierRequest as dy, type HudInsets as dz, type RundotGameExecuteRecipeOptions as e, type RoomsEnvelopeResponse as e0, RpcInboundStorageApi as e1, RpcSharedAssetsApi as e2, type RpcTransport as e3, type RunSubscription as e4, type RundotGameRoomCustomMetadata as e5, type RundotGameRoomPayload as e6, type RundotGameRoomRules as e7, type RundotGameRoomRulesGameState as e8, SHARE_FILE_ALLOWED_MIME_TYPES as e9, resolveCollectionItemPrice as eA, resolveLiveOpsSection as eB, SHARE_FILE_MAX_SIZE_BYTES as ea, type ScheduleRCSStatus as eb, type ShareFileMimeType as ec, type ShopOrder as ed, type SimulationBatchOperationAssign as ee, type SimulationBatchOperationRemove as ef, type SimulationBatchOperationResult as eg, type SimulationPersonalState as eh, type SimulationRoomActiveRecipe as ei, type SimulationRoomState as ej, type StorefrontCollection as ek, type StorefrontCollectionItem as el, type SubPath as em, TIER_SUPPORTED_INTERVALS as en, type Tool as eo, type ToolChoice as ep, type ToolUse as eq, type TimeIntervalTriggerInput as er, type UgcReport as es, type VideoGenEntry as et, type VideoGenReport as eu, asCreditsExhaustedError as ev, assertTierSupportsInterval as ew, createHost as ex, isCreditsExhaustedError as ey, mapCreditsExhaustion as ez, type RundotGameExecuteRecipeResult as f, type RundotGameExecuteScopedRecipeOptions as g, RundotGameRoom as h, type RundotGameSimulationConfig as i, type RundotGameSimulationEffect as j, type RundotGameSimulationRecipe as k, type RundotGameSimulationStateResponse as l, type SimulationEntityUpdate as m, type SimulationRunSummary as n, type SimulationSnapshotUpdate as o, type SimulationSubscribeOptions as p, type SimulationUpdateData as q, type SimulationUpdateType as r, type RpcRequest as s, type RpcResponse as t, type RpcNotification as u, RpcClient as v, type StorageApi as w, type NavigationStackInfo as x, type PushAppOptions as y, type NavigateToGameOptions as z };
4722
+ export { type DeviceInfo as $, type AnalyticsApi as A, type BatchRecipeRequirementsResult as B, type NotificationsApi as C, type ScheduleLocalNotification as D, type SubmitMessageInput as E, type SubmitMessageResult as F, type ScheduleNotificationOptions as G, type Host as H, type RCSAvailabilityStatus as I, type ScheduleRCSInput as J, type ScheduleRCSResult as K, type RequestRCSOptInInput as L, type RequestRCSOptInResult as M, type NavigationApi as N, type PopupsApi as O, type Profile as P, type QuitOptions as Q, type RundotGameAPI as R, type SimulationActiveRunsUpdate as S, type ShowToastOptions as T, type LikeDialogResult as U, type CommentsPanelResult as V, type LikeStateResult as W, type ShowInterstitialAdOptions as X, type ShowRewardedAdOptions as Y, type ProfileApi as Z, type DeviceApi as _, type RecipeRequirementQuery as a, type RoomMessageEvent as a$, type EnvironmentApi as a0, type EnvironmentInfo as a1, type SystemApi as a2, type SafeArea as a3, type AddToHomeScreenResult as a4, type CdnApi as a5, type FetchFromCdnOptions as a6, type AssetUrlResult as a7, type TimeApi as a8, type ServerTimeData as a9, type BackButtonCallback as aA, type IdentityChangedCallback as aB, type IdentityChangedEvent as aC, type SimulationApi as aD, type SimulationSlotValidationResult as aE, type SimulationBatchOperation as aF, type SimulationBatchOperationsResult as aG, type SimulationAvailableItem as aH, type SimulationPowerPreview as aI, type SimulationSlotMutationResult as aJ, type SimulationSlotContainer as aK, type SimulationAssignment as aL, type SimulationState as aM, type ExecuteRecipeOptions as aN, type ExecuteRecipeResponse as aO, type CollectRecipeResult as aP, type ResetStateOptions as aQ, type ResetStateResult as aR, type GetActiveRunsOptions as aS, type ExecuteScopedRecipeOptions as aT, type ExecuteScopedRecipeResult as aU, type GetAvailableRecipesOptions as aV, type GetAvailableRecipesResult as aW, type Recipe as aX, type GetBatchRecipeRequirements as aY, type TriggerRecipeChainOptions as aZ, type RoomDataUpdate as a_, type GetFutureTimeOptions as aa, type AiApi as ab, type AiChatCompletionRequest as ac, type AiChatCompletionData as ad, type PromptCompletionRequest as ae, type AiChatCompletionStreamOptions as af, type AiChatCompletionStreamChunk as ag, type HapticsApi as ah, HapticFeedbackStyle as ai, type GamepadSnapshot as aj, type GamepadConnectionEvent as ak, type Subscription as al, type GamepadApi as am, type GamepadLatencyStats as an, type FeaturesApi as ao, type Experiment as ap, type LiveOpsApi as aq, type LiveOpsConfigResult as ar, type LiveOpsRawConfig as as, type LiveOpsSection as at, type LifecycleApi as au, type SleepCallback as av, type AwakeCallback as aw, type PauseCallback as ax, type ResumeCallback as ay, type QuitCallback as az, type RecipeRequirementResult as b, type UgcApi as b$, type ProposedMoveEvent as b0, RundotGameTransport as b1, type RoomsApi as b2, type CreateRoomOptions as b3, type JoinOrCreateRoomOptions as b4, type JoinOrCreateResult as b5, type ListRoomsOptions as b6, type UpdateRoomDataOptions as b7, type RoomMessageRequest as b8, type StartRoomGameOptions as b9, type ShareMetadata as bA, type ShareLinkResult as bB, type SocialQRCodeOptions as bC, type QRCodeResult as bD, type ShareClickData as bE, type ShareFileOptions as bF, type ShareFileResult as bG, type CanShareFileResult as bH, type ComposeSocialPostOptions as bI, type ComposeSocialPostResult as bJ, type EntitlementApi as bK, type Entitlement as bL, type LedgerEntry as bM, type StatsApi as bN, type GrantInfo as bO, type CollectiblesApi as bP, type CollectibleCard as bQ, type VipClaimResult as bR, type ShopApi as bS, type StorefrontResponse as bT, type StorefrontItem as bU, type ShopPurchaseResponse as bV, type ShopOrderHistoryResponse as bW, type PromptLoginResult as bX, type AccessTier as bY, type AccessGateApi as bZ, type TextGenApi as b_, type ProposeMoveRequest as ba, type ProposeMoveResult as bb, type ValidateMoveVerdict as bc, type ValidateMoveResult as bd, type RoomSubscriptionOptions as be, type LoggingApi as bf, type IapApi as bg, type SpendCurrencyOptions as bh, type SpendCurrencyResult as bi, type SubscriptionTier as bj, type RunSubscriptionsResponse as bk, type SubscriptionInterval as bl, type PurchaseSubscriptionResponse as bm, type OpenStoreResult as bn, type LoadEmbeddedAssetsResponse as bo, type SharedAssetsApi as bp, type CreditsApi as bq, type CreditsBillingContext as br, type CreditBalance as bs, type CreditSubscription as bt, type CreditPlansCatalog as bu, type OpenPaywallOptions as bv, type CreditsPurchaseResult as bw, type Unsubscribe as bx, type PreloaderApi as by, type SocialApi as bz, type RundotGameAvailableRecipe as c, type AdminThreeDGenListReportsParams as c$, type VideoApi as c0, type AppApi as c1, type AdminUgcApi as c2, type AdminImageGenApi as c3, type AdminVideoGenApi as c4, type AdminSpriteGenApi as c5, type AdminAudioGenApi as c6, type AdminThreeDGenApi as c7, type AppRole as c8, type ResolveLaunchIntentOptions as c9, type FilesApi as cA, type ClipsApi as cB, type AttributionApi as cC, type InitializationContext as cD, type InitializationOptions as cE, type CaptureConsent as cF, type StartClipRecordingOptions as cG, type ClipBlob as cH, type ClipsSupport as cI, type ClipPersistOptions as cJ, type ClipResult as cK, type UgcEntry as cL, type CaptureConsentStatus as cM, AccessDeniedError as cN, type AdminGenApi as cO, type AdminImageGenBrowseParams as cP, type AdminImageGenBrowseResponse as cQ, type AdminImageGenListReportsParams as cR, type AdminImageGenListReportsResponse as cS, type AdminImageGenResolveAction as cT, type AdminSpriteGenBrowseParams as cU, type AdminSpriteGenBrowseResponse as cV, type AdminSpriteGenListReportsParams as cW, type AdminSpriteGenListReportsResponse as cX, type AdminSpriteGenResolveAction as cY, type AdminThreeDGenBrowseParams as cZ, type AdminThreeDGenBrowseResponse as c_, type LaunchIntent as ca, type ReleaseNote as cb, type AdminUgcBrowseParams as cc, type AdminUgcBrowseResponse as cd, type AdminUgcListReportsParams as ce, type AdminUgcListReportsResponse as cf, type AdminUgcResolveAction as cg, type AdminGenBrowseParams as ch, type AdminGenBrowseResponse as ci, type ImageGenEntry as cj, type AdminGenListReportsParams as ck, type AdminGenListReportsResponse as cl, type ImageGenReport as cm, type AdminGenResolveAction as cn, type SpriteGenEntry as co, type SpriteGenReport as cp, type ThreeDGenEntry as cq, type ThreeDGenReport as cr, type Avatar3dApi as cs, type AssetManifest as ct, type Avatar3dConfig as cu, type ShowEditorOptions as cv, type Avatar3dEdits as cw, type AdsApi as cx, type RawEnvironmentInfo as cy, type SharedStorageHostApi as cz, type RundotGameCollectRecipeResult as d, type RCSAvailabilityReason as d$, type AdminThreeDGenListReportsResponse as d0, type AdminThreeDGenResolveAction as d1, type AdminUgcEntry as d2, type AdminVideoGenBrowseParams as d3, type AdminVideoGenBrowseResponse as d4, type AdminVideoGenListReportsParams as d5, type AdminVideoGenListReportsResponse as d6, type AdminVideoGenResolveAction as d7, type AiContentBlock as d8, type AiImageContent as d9, type CreditsExhaustedErrorInfo as dA, type CreditsPurchaseOutcome as dB, GAMEPAD_BUTTON_NAMES as dC, type GamepadAxes as dD, type GamepadButtonName as dE, type GamepadButtonState as dF, type GamepadSource as dG, type GetSubscriptionsForTierRequest as dH, type HudInsets as dI, type IdentityChangeReason as dJ, type InboundForKeyEntry as dK, type InboundMethodIds as dL, type InboundStorageApi as dM, type IsPlayerSubscribedRequest as dN, type JoinOrCreateRoomEnvelopeResponse as dO, type JoinRoomMatchCriteria as dP, type LaunchIntentKind as dQ, type LiveOpsOverride as dR, type LoadEmbeddedAssetsRequest as dS, MockAvatarApi as dT, type NotificationTriggerInput as dU, type OnNotificationCallback as dV, type OnRequestCallback as dW, type OnResponseCallback as dX, type PlatformCapabilities as dY, type ProposedMovePayload as dZ, type PurchaseSubscriptionRequest as d_, type AiImageUrlContent as da, type AiMessage as db, type AiResponseFormat as dc, type AiTextContent as dd, type AiToolResultContent as de, type AiToolUseContent as df, type Asset as dg, type AudioGenEntry as dh, type AudioGenReport as di, CLIP_CONTENT_TYPE as dj, COMPOSE_POST_MAX_TEXT_LENGTH as dk, COMPOSE_POST_MAX_TITLE_LENGTH as dl, COMPOSE_POST_SUBREDDIT_PATTERN as dm, CREDITS_EXHAUSTED_CODE as dn, type Category as dp, type ClipAudioOptions as dq, type ClipCameraOptions as dr, type ClipPipLayout as ds, type ClipPipPosition as dt, type ComposeSocialPostMedia as du, type CreditFreeDailyInfo as dv, type CreditPlan as dw, type CreditTopUpPack as dx, type CreditsBilledTo as dy, CreditsExhaustedError as dz, type RundotGameExecuteRecipeOptions as e, type RCSOptInStatus as e0, ROOM_GAME_PHASES as e1, type RecipeInfo as e2, type ReleaseType as e3, type ResolvedLiveOps as e4, type RoomEnvelopeResponse as e5, type RoomGamePhase as e6, type RoomMessageEventType as e7, type RoomMessagePayload as e8, type RoomsEnvelopeResponse as e9, type SubmitMessageResultChannel as eA, TIER_SUPPORTED_INTERVALS as eB, type Tool as eC, type ToolChoice as eD, type ToolUse as eE, type TimeIntervalTriggerInput as eF, type UgcReport as eG, type VideoGenEntry as eH, type VideoGenReport as eI, asCreditsExhaustedError as eJ, assertTierSupportsInterval as eK, createHost as eL, isCreditsExhaustedError as eM, mapCreditsExhaustion as eN, resolveCollectionItemPrice as eO, resolveLiveOpsSection as eP, toPromptWireRequest as eQ, RpcInboundStorageApi as ea, RpcSharedAssetsApi as eb, type RpcTransport as ec, type RunSubscription as ed, type RundotGameRoomCustomMetadata as ee, type RundotGameRoomPayload as ef, type RundotGameRoomRules as eg, type RundotGameRoomRulesGameState as eh, SHARE_FILE_ALLOWED_MIME_TYPES as ei, SHARE_FILE_MAX_SIZE_BYTES as ej, SOCIAL_COMPOSE_PLATFORMS as ek, type ScheduleRCSStatus as el, type ShareFileMimeType as em, type ShopOrder as en, type SimulationBatchOperationAssign as eo, type SimulationBatchOperationRemove as ep, type SimulationBatchOperationResult as eq, type SimulationPersonalState as er, type SimulationRoomActiveRecipe as es, type SimulationRoomState as et, type SocialComposePlatform as eu, type StorefrontCollection as ev, type StorefrontCollectionItem as ew, type SubPath as ex, type SubmitMessageChannel as ey, type SubmitMessageChannelResult as ez, type RundotGameExecuteRecipeResult as f, type RundotGameExecuteScopedRecipeOptions as g, RundotGameRoom as h, type RundotGameSimulationConfig as i, type RundotGameSimulationEffect as j, type RundotGameSimulationRecipe as k, type RundotGameSimulationStateResponse as l, type SimulationEntityUpdate as m, type SimulationRunSummary as n, type SimulationSnapshotUpdate as o, type SimulationSubscribeOptions as p, type SimulationUpdateData as q, type SimulationUpdateType as r, type RpcRequest as s, type RpcResponse as t, type RpcNotification as u, RpcClient as v, type StorageApi as w, type NavigationStackInfo as x, type PushAppOptions as y, type NavigateToGameOptions as z };
@@ -1,3 +1,5 @@
1
+ import { h as ReplayFile } from './types-BV8uchSD.js';
2
+
1
3
  type ImageGenModel = 'gemini-3.1-flash-image-preview' | 'gemini-3-pro-image-preview' | 'gpt-image-1' | 'gpt-image-2';
2
4
  type BgRemovalModel = 'bria' | 'birefnet';
3
5
  type BiRefNetVariant = 'light' | 'heavy' | 'portrait';
@@ -224,6 +226,57 @@ interface AudioGenApi {
224
226
  saveDesignedVoice(params: SaveDesignedVoiceParams): Promise<SaveDesignedVoiceResult>;
225
227
  }
226
228
 
229
+ /**
230
+ * Structured rejection detail from an upstream AI provider (e.g. a video-gen
231
+ * content-policy violation). All fields are best-effort and optional.
232
+ *
233
+ * Mirror of the canonical server type
234
+ * (venus server/cloud-run/src/types/providerError.ts).
235
+ */
236
+ interface ProviderErrorDetail {
237
+ /** Path to the offending request field, e.g. ["body", "image_urls"]. */
238
+ loc?: (string | number)[];
239
+ /** Provider error type, e.g. "content_policy_violation". */
240
+ type?: string;
241
+ /** Provider-internal reason code, e.g. "partner_validation_failed". */
242
+ reason?: string;
243
+ /** Provider's verbatim human-readable message. */
244
+ msg?: string;
245
+ }
246
+ /**
247
+ * Base error for rundot API failures that include a machine-readable code.
248
+ * Thrown by SDK methods when the server returns a structured error response.
249
+ */
250
+ declare class RundotApiError extends Error {
251
+ readonly code: string;
252
+ /** HTTP status when the error came over HTTP; `0` for transport/RPC errors with no HTTP status. */
253
+ readonly status: number;
254
+ /**
255
+ * Optional human-readable cause from the server (e.g. an upstream provider's
256
+ * validation message), surfaced alongside the controlled `message` so callers
257
+ * can show the specific reason rather than a generic failure.
258
+ *
259
+ * This is a flattened STRING. For the machine-readable breakdown of a
260
+ * provider rejection (type / reason / offending field), use `errorDetail`.
261
+ */
262
+ readonly detail?: string;
263
+ /**
264
+ * Optional structured provider rejection detail (e.g.
265
+ * `{ type: 'content_policy_violation', reason: 'partner_validation_failed' }`).
266
+ * Unlike `detail` (a display string), this is meant for programmatic handling.
267
+ */
268
+ readonly errorDetail?: ProviderErrorDetail;
269
+ constructor(code: string, message: string, status?: number, detail?: string, errorDetail?: ProviderErrorDetail);
270
+ }
271
+ /**
272
+ * Thrown when a request is rate-limited (HTTP 429).
273
+ * `retryAfterMs` indicates how long to wait before retrying.
274
+ */
275
+ declare class RateLimitedError extends RundotApiError {
276
+ readonly retryAfterMs: number;
277
+ constructor(retryAfterMs: number, message?: string);
278
+ }
279
+
227
280
  type VideoGenProvider = 'seedance-2.0' | 'seedance-2.0-fast' | 'kling-3.0-standard';
228
281
  type VideoGenMode = 'text-to-video' | 'image-to-video' | 'reference-to-video';
229
282
  type VideoGenAspectRatio = '21:9' | '16:9' | '4:3' | '1:1' | '3:4' | '9:16';
@@ -299,7 +352,23 @@ interface VideoGenJobEvent {
299
352
  status: 'completed' | 'failed';
300
353
  params: VideoGenParams;
301
354
  result?: VideoGenResult;
302
- error?: string;
355
+ /**
356
+ * Failure info. Historically typed as `string`, but the host passes the raw
357
+ * job-doc error through, which is an object for most failures — typed
358
+ * honestly here without changing what arrives at runtime.
359
+ */
360
+ error?: string | {
361
+ code?: string;
362
+ message?: string;
363
+ detail?: string;
364
+ providerType?: string;
365
+ errorDetail?: ProviderErrorDetail;
366
+ };
367
+ /**
368
+ * Structured provider rejection detail for failed jobs (e.g.
369
+ * `{ type: 'content_policy_violation' }`), when the provider supplied one.
370
+ */
371
+ errorDetail?: ProviderErrorDetail;
303
372
  }
304
373
  interface VideoGenJobStartedEvent {
305
374
  jobId: string;
@@ -381,6 +450,10 @@ interface AnimateSpriteParams {
381
450
  sourceFileKey?: string;
382
451
  /** Or: an HTTPS URL to import and animate. */
383
452
  sourceImageUrl?: string;
453
+ /** Override source-derived animation mode. Omit to infer from the source asset. */
454
+ pixel?: boolean;
455
+ /** Pixel-animation palette size. The animation provider does not accept a fixed hex palette. */
456
+ paletteSize?: number;
384
457
  /** Motion description, e.g. "walk cycle, side view" or "idle breathing". */
385
458
  prompt: string;
386
459
  /** Frame count. Pixel: 2-16 (even), HD: 2-24 (even). Default 8. */
@@ -669,6 +742,14 @@ interface LeaderboardConfig {
669
742
  requiresToken: boolean;
670
743
  enableScoreSealing: boolean;
671
744
  scoreSealingSecret?: string;
745
+ /**
746
+ * When true, a submitted score enters the public ranking only after the
747
+ * server re-runs the game's certified score runtime over the player's
748
+ * recorded inputs and confirms the score matches (M8.5 replay verification).
749
+ * Per-board (applies to all of the board's modes); absent/false ⇒ today's
750
+ * behavior. A `requiresReplay` submission must attach `SubmitScoreParams.replay`.
751
+ */
752
+ requiresReplay?: boolean;
672
753
  modes: Record<string, LeaderboardModeConfig>;
673
754
  periods: Record<string, LeaderboardPeriodConfig>;
674
755
  antiCheat: LeaderboardAntiCheatConfig;
@@ -696,14 +777,26 @@ interface SubmitScoreParams {
696
777
  * leaderboards reject submissions without a valid hash.
697
778
  */
698
779
  hash?: string;
780
+ /**
781
+ * The player's recorded syncplay replay (inputs + seed). Required for a
782
+ * `requiresReplay` board: the server re-runs the certified score runtime over
783
+ * these inputs and only ranks the score on a match. Attach it from
784
+ * `session.exportReplay()`. A replay serializing above the inline cap
785
+ * ({@link REPLAY_INLINE_MAX_BYTES}) is rejected client-side before submitting.
786
+ */
787
+ replay?: ReplayFile;
699
788
  }
700
789
  /**
701
790
  * Machine-readable reason a submit was not accepted.
702
791
  * - `identity_changed`: the score token was minted under a different identity
703
792
  * (the player signed into another account mid-session). Re-mint with
704
793
  * `createScoreToken()` and resubmit under the new identity.
794
+ * - `replay_rejected`: a `requiresReplay` board could not verify the submitted
795
+ * score against the recorded replay (mismatch, invalid/missing replay, or the
796
+ * verifier was unavailable). The score was NOT ranked. Surface it as the
797
+ * terminal "rejected" state of the optimistic pending → ranked/rejected UX.
705
798
  */
706
- type SubmitScoreFailureReason = 'identity_changed';
799
+ type SubmitScoreFailureReason = 'identity_changed' | 'replay_rejected';
707
800
  interface SubmitScoreResult {
708
801
  accepted: boolean;
709
802
  rank?: number | null;
@@ -787,4 +880,4 @@ interface LeaderboardApi {
787
880
  getPodiumScores(options?: GetPodiumScoresOptions): Promise<PodiumScoresResponse>;
788
881
  }
789
882
 
790
- export type { BgRemovalModel as $, AudioGenApi as A, RemeshParams as B, CharacterAnimateParams as C, DepthEstimationParams as D, RemeshResult as E, RigParams as F, RigResult as G, AnimateParams as H, ImageGenApi as I, AnimateResult as J, ThreeDGenJobEvent as K, ListVoicesResult as L, LeaderboardApi as M, ScoreToken as N, SubmitScoreParams as O, SubmitScoreResult as P, GetPagedScoresOptions as Q, RemoveBackgroundParams as R, SaveDesignedVoiceParams as S, ThreeDGenApi as T, UpscaleImageParams as U, VideoGenApi as V, PagedScoresResponse as W, PlayerRankOptions as X, PlayerRankResult as Y, GetPodiumScoresOptions as Z, PodiumScoresResponse as _, ImageGenParams as a, BiRefNetVariant as a0, CharacterAnimateResult as a1, CharacterAnimationOutput as a2, ImageGenModel as a3, LeaderboardAntiCheatConfig as a4, LeaderboardConfig as a5, LeaderboardDisplaySettings as a6, LeaderboardEntry as a7, LeaderboardModeConfig as a8, LeaderboardPeriodConfig as a9, LeaderboardPeriodType as aa, PodiumScoresContext as ab, RemoveBackgroundOptions as ac, SpriteGenGeneratedAsset as ad, SpriteGenModel as ae, SubmitScoreFailureReason as af, UpscaleImageModel as ag, ImageGenResult as b, DepthEstimationResult as c, RemoveBackgroundResult as d, UpscaleImageResult as e, ImageGenJobEvent as f, AudioGenParams as g, AudioGenResult as h, AudioGenJobEvent as i, DesignVoicesParams as j, DesignVoicesResult as k, SaveDesignedVoiceResult as l, VideoGenParams as m, VideoGenResult as n, VideoGenJobEvent as o, VideoGenJobStartedEvent as p, SpriteGenApi as q, SpriteGenParams as r, SpriteGenResult as s, AnimateSpriteParams as t, AnimateSpriteResult as u, CharacterWorkflow as v, SpriteGenCosts as w, SpriteGenJobEvent as x, ThreeDGenParams as y, ThreeDGenResult as z };
883
+ export { type ProviderErrorDetail as $, type AudioGenApi as A, type RemeshParams as B, type CharacterAnimateParams as C, type DepthEstimationParams as D, type RemeshResult as E, type RigParams as F, type RigResult as G, type AnimateParams as H, type ImageGenApi as I, type AnimateResult as J, type ThreeDGenJobEvent as K, type ListVoicesResult as L, type LeaderboardApi as M, type ScoreToken as N, type SubmitScoreParams as O, type SubmitScoreResult as P, type GetPagedScoresOptions as Q, type RemoveBackgroundParams as R, type SaveDesignedVoiceParams as S, type ThreeDGenApi as T, type UpscaleImageParams as U, type VideoGenApi as V, type PagedScoresResponse as W, type PlayerRankOptions as X, type PlayerRankResult as Y, type GetPodiumScoresOptions as Z, type PodiumScoresResponse as _, type ImageGenParams as a, type BgRemovalModel as a0, type BiRefNetVariant as a1, type CharacterAnimateResult as a2, type CharacterAnimationOutput as a3, type ImageGenModel as a4, type LeaderboardAntiCheatConfig as a5, type LeaderboardConfig as a6, type LeaderboardDisplaySettings as a7, type LeaderboardEntry as a8, type LeaderboardModeConfig as a9, type LeaderboardPeriodConfig as aa, type LeaderboardPeriodType as ab, type PodiumScoresContext as ac, RateLimitedError as ad, type RemoveBackgroundOptions as ae, RundotApiError as af, type SpriteGenGeneratedAsset as ag, type SpriteGenModel as ah, type SubmitScoreFailureReason as ai, type UpscaleImageModel as aj, type ImageGenResult as b, type DepthEstimationResult as c, type RemoveBackgroundResult as d, type UpscaleImageResult as e, type ImageGenJobEvent as f, type AudioGenParams as g, type AudioGenResult as h, type AudioGenJobEvent as i, type DesignVoicesParams as j, type DesignVoicesResult as k, type SaveDesignedVoiceResult as l, type VideoGenParams as m, type VideoGenResult as n, type VideoGenJobEvent as o, type VideoGenJobStartedEvent as p, type SpriteGenApi as q, type SpriteGenParams as r, type SpriteGenResult as s, type AnimateSpriteParams as t, type AnimateSpriteResult as u, type CharacterWorkflow as v, type SpriteGenCosts as w, type SpriteGenJobEvent as x, type ThreeDGenParams as y, type ThreeDGenResult as z };
@@ -1,4 +1,4 @@
1
- import { C as CanonicalValue, h as ReplayFile, O as OfflineSession } from './types-BXxDmID0.js';
1
+ import { C as CanonicalValue, h as ReplayFile, O as OfflineSession } from './types-BV8uchSD.js';
2
2
  import { M as MultiplayerApi } from './MultiplayerApi-nnrGTTcO.js';
3
3
 
4
4
  /**