@dreamboard-games/sdk 0.5.0-alpha.2 → 0.5.0-alpha.3

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 (150) hide show
  1. package/README.md +136 -45
  2. package/dist/chunk-DMFVAZI2.js +16 -0
  3. package/dist/chunk-DMFVAZI2.js.map +1 -0
  4. package/dist/chunk-FMM5LVJW.js +833 -0
  5. package/dist/chunk-FMM5LVJW.js.map +1 -0
  6. package/dist/{chunk-S2JEDVWH.js → chunk-LRILEVKC.js} +6113 -6489
  7. package/dist/chunk-LRILEVKC.js.map +1 -0
  8. package/dist/chunk-SP234IY4.js +1363 -0
  9. package/dist/chunk-SP234IY4.js.map +1 -0
  10. package/dist/chunk-VUWNJXLJ.js +52 -0
  11. package/dist/chunk-VUWNJXLJ.js.map +1 -0
  12. package/dist/chunk-ZPRKWPEP.js +511 -0
  13. package/dist/chunk-ZPRKWPEP.js.map +1 -0
  14. package/dist/definition-BaHNPZol.d.ts +4639 -0
  15. package/dist/diagnostics-B0lgnuZ6.d.ts +65 -0
  16. package/dist/index.d.ts +3553 -1
  17. package/dist/index.js +1045 -6
  18. package/dist/index.js.map +1 -1
  19. package/dist/model-BHro6yXu.d.ts +288 -0
  20. package/dist/react.d.ts +32 -0
  21. package/dist/react.js +80 -0
  22. package/dist/react.js.map +1 -0
  23. package/dist/reducer.d.ts +1194 -79
  24. package/dist/reducer.js +4326 -121
  25. package/dist/reducer.js.map +1 -1
  26. package/dist/testing.d.ts +518 -564
  27. package/dist/testing.js +2448 -915
  28. package/dist/testing.js.map +1 -1
  29. package/dist/types-DimqnJBq.d.ts +86 -0
  30. package/package.json +26 -131
  31. package/dist/HandView-Bi2lxzQP.d.ts +0 -79
  32. package/dist/ResourceCounter-BFxJknqp.d.ts +0 -98
  33. package/dist/ThemeProvider-CElaL2ik.d.ts +0 -99
  34. package/dist/attributes-DbvyMbXw.d.ts +0 -68
  35. package/dist/browser-interaction.d.ts +0 -910
  36. package/dist/browser-interaction.js +0 -119
  37. package/dist/browser-interaction.js.map +0 -1
  38. package/dist/chunk-32PFKDV7.js +0 -11705
  39. package/dist/chunk-32PFKDV7.js.map +0 -1
  40. package/dist/chunk-3BAD4VC2.js +0 -263
  41. package/dist/chunk-3BAD4VC2.js.map +0 -1
  42. package/dist/chunk-3SKDNDPG.js +0 -104
  43. package/dist/chunk-3SKDNDPG.js.map +0 -1
  44. package/dist/chunk-5YV2WHJ4.js +0 -25
  45. package/dist/chunk-5YV2WHJ4.js.map +0 -1
  46. package/dist/chunk-ANRB4XKA.js +0 -90
  47. package/dist/chunk-ANRB4XKA.js.map +0 -1
  48. package/dist/chunk-BI4G3PM2.js +0 -1864
  49. package/dist/chunk-BI4G3PM2.js.map +0 -1
  50. package/dist/chunk-EVCLTY4Q.js +0 -935
  51. package/dist/chunk-EVCLTY4Q.js.map +0 -1
  52. package/dist/chunk-GDPKTBUR.js +0 -564
  53. package/dist/chunk-GDPKTBUR.js.map +0 -1
  54. package/dist/chunk-H6VDGFL5.js +0 -2903
  55. package/dist/chunk-H6VDGFL5.js.map +0 -1
  56. package/dist/chunk-LR3ZTWQF.js +0 -5960
  57. package/dist/chunk-LR3ZTWQF.js.map +0 -1
  58. package/dist/chunk-PF7L4BMG.js +0 -117
  59. package/dist/chunk-PF7L4BMG.js.map +0 -1
  60. package/dist/chunk-PN5O6GG2.js +0 -32
  61. package/dist/chunk-PN5O6GG2.js.map +0 -1
  62. package/dist/chunk-PZ5AY32C.js +0 -10
  63. package/dist/chunk-PZ5AY32C.js.map +0 -1
  64. package/dist/chunk-S2JEDVWH.js.map +0 -1
  65. package/dist/chunk-T3ZKNUZ7.js +0 -1
  66. package/dist/chunk-T3ZKNUZ7.js.map +0 -1
  67. package/dist/chunk-UGH54WZ2.js +0 -223
  68. package/dist/chunk-UGH54WZ2.js.map +0 -1
  69. package/dist/chunk-VCDWP5VL.js +0 -746
  70. package/dist/chunk-VCDWP5VL.js.map +0 -1
  71. package/dist/chunk-VDXOF4FW.js +0 -69
  72. package/dist/chunk-VDXOF4FW.js.map +0 -1
  73. package/dist/chunk-WHR5UW3F.js +0 -1988
  74. package/dist/chunk-WHR5UW3F.js.map +0 -1
  75. package/dist/chunk-Y75CFE77.js +0 -17
  76. package/dist/chunk-Y75CFE77.js.map +0 -1
  77. package/dist/chunk-Z7QCREWI.js +0 -3435
  78. package/dist/chunk-Z7QCREWI.js.map +0 -1
  79. package/dist/chunk-ZZGN2ATS.js +0 -1941
  80. package/dist/chunk-ZZGN2ATS.js.map +0 -1
  81. package/dist/components-gAbIz7hK.d.ts +0 -1284
  82. package/dist/definitions-BgmV_GhC.d.ts +0 -300
  83. package/dist/diagnostics-DIi3ina7.d.ts +0 -50
  84. package/dist/digest.d.ts +0 -8
  85. package/dist/game-CsZScpcn.d.ts +0 -763
  86. package/dist/hex-board-view-aKkblDp6.d.ts +0 -1228
  87. package/dist/index-CcT9Q7N7.d.ts +0 -193
  88. package/dist/index.d-DjzoK7zn.d.ts +0 -2101
  89. package/dist/package-set.d.ts +0 -13
  90. package/dist/package-set.js +0 -12
  91. package/dist/package-set.js.map +0 -1
  92. package/dist/player-state-Cqpyeql0.d.ts +0 -371
  93. package/dist/plugin-runtime-contract.d.ts +0 -17
  94. package/dist/plugin-runtime-contract.js +0 -92
  95. package/dist/plugin-runtime-contract.js.map +0 -1
  96. package/dist/primitive-props-BNHDkgd7.d.ts +0 -16
  97. package/dist/protocol-dYgafTYY.d.ts +0 -314
  98. package/dist/reducer/advanced.d.ts +0 -82
  99. package/dist/reducer/advanced.js +0 -51
  100. package/dist/reducer/advanced.js.map +0 -1
  101. package/dist/reducer-contract.d.ts +0 -11
  102. package/dist/reducer-contract.js +0 -16
  103. package/dist/reducer-contract.js.map +0 -1
  104. package/dist/reference-games/index.d.ts +0 -31
  105. package/dist/reference-games/index.js +0 -48
  106. package/dist/reference-games/index.js.map +0 -1
  107. package/dist/runtime/primitives.d.ts +0 -250
  108. package/dist/runtime/primitives.js +0 -189
  109. package/dist/runtime/primitives.js.map +0 -1
  110. package/dist/runtime/runtime-api.d.ts +0 -2
  111. package/dist/runtime/runtime-api.js +0 -1
  112. package/dist/runtime/runtime-api.js.map +0 -1
  113. package/dist/runtime/workspace-contract.d.ts +0 -392
  114. package/dist/runtime/workspace-contract.js +0 -28
  115. package/dist/runtime/workspace-contract.js.map +0 -1
  116. package/dist/runtime-RJ5orDJU.d.ts +0 -1699
  117. package/dist/runtime-api-Bz5pwNU_.d.ts +0 -296
  118. package/dist/runtime-json-CQ9QbLZ5.d.ts +0 -5
  119. package/dist/runtime.d.ts +0 -83
  120. package/dist/runtime.js +0 -242
  121. package/dist/runtime.js.map +0 -1
  122. package/dist/schema.d.ts +0 -379
  123. package/dist/stale-contract-artifact-error-XLaweZtF.d.ts +0 -18
  124. package/dist/testing-compiler.d.ts +0 -37
  125. package/dist/testing-compiler.js +0 -272
  126. package/dist/testing-compiler.js.map +0 -1
  127. package/dist/testing-runtime.d.ts +0 -119
  128. package/dist/testing-runtime.js +0 -212
  129. package/dist/testing-runtime.js.map +0 -1
  130. package/dist/types-DJj5MJkl.d.ts +0 -256
  131. package/dist/types-DR7DoB1x.d.ts +0 -28
  132. package/dist/types-JWCYHmu7.d.ts +0 -122
  133. package/dist/types.d.ts +0 -1958
  134. package/dist/types.js +0 -14
  135. package/dist/types.js.map +0 -1
  136. package/dist/ui/components.d.ts +0 -17
  137. package/dist/ui/components.js +0 -216
  138. package/dist/ui/components.js.map +0 -1
  139. package/dist/ui/defaults.d.ts +0 -19
  140. package/dist/ui/defaults.js +0 -104
  141. package/dist/ui/defaults.js.map +0 -1
  142. package/dist/ui/player-state.d.ts +0 -2
  143. package/dist/ui/player-state.js +0 -1
  144. package/dist/ui/player-state.js.map +0 -1
  145. package/dist/ui/plugin-styles.css +0 -2
  146. package/dist/ui-contract-GTUPkf8z.d.ts +0 -1168
  147. package/dist/ui.d.ts +0 -317
  148. package/dist/ui.js +0 -277
  149. package/dist/ui.js.map +0 -1
  150. package/dist/views-BpuWcOyN.d.ts +0 -1641
package/dist/index.d.ts CHANGED
@@ -1 +1,3553 @@
1
- export { DREAMBOARD_SDK_PACKAGES, DREAMBOARD_SDK_PACKAGE_SET, DREAMBOARD_SDK_VERSION, DreamboardSdkPackageName, DreamboardSdkPackageSet } from './package-set.js';
1
+ import { g as Features, m as InstanceOptions, e as CoreInstance, f as FeatureContext, G as GameInstance, C as Card, Z as Zone, I as IdOf, b as BoardCollection, a as BoardBase, p as InteractionKey, l as InputKey, c as CardBase } from './model-BHro6yXu.js';
2
+ export { A as ActionProps, B as Board, d as CardDataOf, D as Drafts, F as Feature, h as FieldEvent, i as GameSnapshot, H as Hook, j as Input, k as InputBase, n as Interaction, o as InteractionBase, q as InteractionParams, L as LocalState, N as NativeEvent, P as Phase, r as PhaseName, s as Player, R as ReadModel, t as ReadonlyData, T as Turn, V as ViewOf, u as ZoneBase } from './model-BHro6yXu.js';
3
+ import { I as InteractionDescriptor, b as GameplayBasis, e as PluginSessionDescriptor, c as PluginGameplayFrame, G as GameSource, g as SourceSnapshot, C as CommandSource, P as PlayerId, f as ReducerSeatProjectionBundle, R as ReducerBoardStaticProjection } from './types-DimqnJBq.js';
4
+ export { A as ActionInteractionDescriptor, a as ApplySource, d as PluginPlayerSummary, S as SimultaneousPhaseSnapshot, h as SourceState, i as SubmitResult, Z as ZoneHandlesSnapshot } from './types-DimqnJBq.js';
5
+ import { z } from 'zod';
6
+ import { av as RuntimeJson, au as RuntimeHexSpaceState, aB as RuntimeSquareSpaceState, aD as RuntimeTiledEdgeState, aE as RuntimeTiledVertexState } from './definition-BaHNPZol.js';
7
+ export { G as GameEvent, k as GameEventDetail, m as GameOutcome, u as InputDomain, v as InputDomainSchema, w as InputSelection, y as InteractionAvailability, z as InteractionAvailabilitySchema, A as InteractionChoiceOption, J as InteractionCommitPolicy, K as InteractionCommitPolicySchema, M as InteractionDescriptorSchema, N as InteractionDiagnosticReason, P as InteractionInputDescriptor, Q as InteractionInputDescriptorSchema, $ as OutcomeResult, a0 as OutcomeScoreComponent, a1 as OutcomeStanding, a2 as OutcomeTieBreak, aw as RuntimeJsonSchema, aL as SystemActionEvent, aU as ViewCard } from './definition-BaHNPZol.js';
8
+ import '@tanstack/store';
9
+ import 'honeycomb-grid';
10
+
11
+ declare const DREAMBOARD_SDK_VERSION: string;
12
+ declare const DREAMBOARD_SDK_PACKAGES: {
13
+ readonly "@dreamboard-games/sdk": string;
14
+ };
15
+ type DreamboardSdkPackageName = keyof typeof DREAMBOARD_SDK_PACKAGES;
16
+ type DreamboardSdkPackageSet = {
17
+ version: 1;
18
+ sdkVersion: string;
19
+ packages: Record<DreamboardSdkPackageName, string>;
20
+ };
21
+ declare const DREAMBOARD_SDK_PACKAGE_SET: DreamboardSdkPackageSet;
22
+
23
+ declare const DREAMBOARD_PLUGIN_PROTOCOL: "dreamboard-plugin";
24
+ declare const DREAMBOARD_PLUGIN_PROTOCOL_VERSION: 5;
25
+ type InteractionResult = {
26
+ readonly type: "interaction.result";
27
+ readonly clientActionId: string;
28
+ readonly accepted: true;
29
+ } | {
30
+ readonly type: "interaction.result";
31
+ readonly clientActionId: string;
32
+ readonly accepted: false;
33
+ readonly errorCode: string;
34
+ readonly message?: string;
35
+ };
36
+ interface SubmitInteractionCommand {
37
+ readonly type: "interaction.submit";
38
+ readonly clientActionId: string;
39
+ readonly basis: GameplayBasis;
40
+ readonly interactionId: string;
41
+ readonly params: RuntimeJson;
42
+ }
43
+ interface CancelInteractionCommand {
44
+ readonly type: "interaction.cancel";
45
+ readonly clientActionId: string;
46
+ readonly basis: GameplayBasis;
47
+ readonly interactionId: string;
48
+ }
49
+ type HostToPluginPayload = {
50
+ readonly type: "runtime.init";
51
+ readonly session: PluginSessionDescriptor;
52
+ } | {
53
+ readonly type: "gameplay.frame";
54
+ readonly frame: PluginGameplayFrame;
55
+ } | InteractionResult;
56
+ type PluginToHostPayload = {
57
+ readonly type: "runtime.ready";
58
+ } | {
59
+ readonly type: "runtime.resume";
60
+ } | {
61
+ readonly type: "runtime.ack";
62
+ /** Echoes the host envelope sequence. It is delivery order only. */
63
+ readonly sequence: number;
64
+ readonly clientReceivedAtMs?: number;
65
+ readonly clientRenderedAtMs?: number;
66
+ } | SubmitInteractionCommand | CancelInteractionCommand | {
67
+ readonly type: "runtime.error";
68
+ readonly message: string;
69
+ readonly code?: string;
70
+ };
71
+ interface PluginProtocolEnvelope<Payload> {
72
+ readonly protocol: typeof DREAMBOARD_PLUGIN_PROTOCOL;
73
+ readonly version: typeof DREAMBOARD_PLUGIN_PROTOCOL_VERSION;
74
+ readonly channelId: string;
75
+ /** Delivery order only. It is not a game revision. */
76
+ readonly sequence: number;
77
+ readonly payload: Payload;
78
+ }
79
+ type HostToPluginEnvelope = PluginProtocolEnvelope<HostToPluginPayload>;
80
+ type PluginToHostEnvelope = PluginProtocolEnvelope<PluginToHostPayload>;
81
+ type ActionSetVersionInput = {
82
+ readonly version: number;
83
+ readonly availableInteractions: readonly InteractionDescriptor[];
84
+ };
85
+
86
+ declare class AmbiguousTargetError extends Error {
87
+ constructor(id: string);
88
+ }
89
+ declare function createGameInstance<G>(): <const F extends Features = Record<never, never>, S extends GameSource = GameSource>(options: InstanceOptions<G, S> & {
90
+ features?: (core: CoreInstance<G>, context: FeatureContext<G>) => F;
91
+ }) => GameInstance<G, F, S>;
92
+
93
+ /** A read-only fixture source accepts the public seat snapshot, never wire basis. */
94
+ declare function staticSource(input: SourceSnapshot): GameSource;
95
+
96
+ /** Pins its parent window, origin and channel at the first valid initialization. */
97
+ declare function iframeSource(options?: {
98
+ timeoutMs?: number;
99
+ }): CommandSource;
100
+
101
+ declare const GameplayCloseCode: {
102
+ readonly GoingAway: 1001;
103
+ readonly CredentialExpired: 4000;
104
+ readonly CredentialInvalid: 4001;
105
+ readonly RefreshContextMismatch: 4002;
106
+ readonly PermissionDenied: 4100;
107
+ readonly ProtocolViolation: 4200;
108
+ readonly FrameBeforeAuth: 4201;
109
+ readonly SlowConsumer: 4300;
110
+ readonly TooManyRequests: 4301;
111
+ };
112
+ declare const GameplayCredentialSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
113
+ kind: z.ZodLiteral<"user">;
114
+ token: z.ZodString;
115
+ }, z.core.$strict>, z.ZodObject<{
116
+ kind: z.ZodLiteral<"demo">;
117
+ secret: z.ZodString;
118
+ }, z.core.$strict>], "kind">;
119
+ declare const AuthConnectFrameSchema: z.ZodObject<{
120
+ type: z.ZodLiteral<"auth.connect">;
121
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
122
+ kind: z.ZodLiteral<"user">;
123
+ token: z.ZodString;
124
+ }, z.core.$strict>, z.ZodObject<{
125
+ kind: z.ZodLiteral<"demo">;
126
+ secret: z.ZodString;
127
+ }, z.core.$strict>], "kind">;
128
+ sessionId: z.ZodString;
129
+ playerId: z.ZodString;
130
+ }, z.core.$strict>;
131
+ declare const AuthRefreshFrameSchema: z.ZodObject<{
132
+ type: z.ZodLiteral<"auth.refresh">;
133
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
134
+ kind: z.ZodLiteral<"user">;
135
+ token: z.ZodString;
136
+ }, z.core.$strict>, z.ZodObject<{
137
+ kind: z.ZodLiteral<"demo">;
138
+ secret: z.ZodString;
139
+ }, z.core.$strict>], "kind">;
140
+ }, z.core.$strict>;
141
+ declare const SessionResumeFrameSchema: z.ZodObject<{
142
+ type: z.ZodLiteral<"session.resume">;
143
+ lastSeenLogCursor: z.ZodNullable<z.ZodNumber>;
144
+ unacknowledgedClientActionIds: z.ZodArray<z.ZodString>;
145
+ }, z.core.$strip>;
146
+ declare const AuthAcceptedFrameSchema: z.ZodObject<{
147
+ type: z.ZodLiteral<"auth.accepted">;
148
+ expiresAt: z.ZodString;
149
+ }, z.core.$strip>;
150
+ declare const GameplayBackpressureReasonSchema: z.ZodEnum<{
151
+ queue_full: "queue_full";
152
+ capacity_full: "capacity_full";
153
+ }>;
154
+ declare const GameplayBackpressureOperationSchema: z.ZodEnum<{
155
+ "interaction.cancel": "interaction.cancel";
156
+ "interaction.submit": "interaction.submit";
157
+ "session.resume": "session.resume";
158
+ }>;
159
+ declare const GameplayBackpressureFrameSchema: z.ZodObject<{
160
+ type: z.ZodLiteral<"gameplay.backpressure">;
161
+ reason: z.ZodEnum<{
162
+ queue_full: "queue_full";
163
+ capacity_full: "capacity_full";
164
+ }>;
165
+ retryAfterMs: z.ZodNumber;
166
+ message: z.ZodString;
167
+ operation: z.ZodEnum<{
168
+ "interaction.cancel": "interaction.cancel";
169
+ "interaction.submit": "interaction.submit";
170
+ "session.resume": "session.resume";
171
+ }>;
172
+ clientActionId: z.ZodOptional<z.ZodString>;
173
+ }, z.core.$strip>;
174
+ declare const SessionSnapshotFrameSchema: z.ZodObject<{
175
+ type: z.ZodLiteral<"session.snapshot">;
176
+ frame: z.ZodObject<{
177
+ events: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
178
+ kind: z.ZodLiteral<"systemAction">;
179
+ procedureId: z.ZodString;
180
+ title: z.ZodString;
181
+ summary: z.ZodOptional<z.ZodString>;
182
+ details: z.ZodOptional<z.ZodArray<z.ZodObject<{
183
+ label: z.ZodString;
184
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
185
+ }, z.core.$strict>>>;
186
+ }, z.core.$strict>], "kind">>;
187
+ view: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
188
+ flow: z.ZodObject<{
189
+ currentPhase: z.ZodNullable<z.ZodString>;
190
+ activePlayers: z.ZodArray<z.ZodString>;
191
+ simultaneousPhase: z.ZodNullable<z.ZodObject<{
192
+ phaseName: z.ZodString;
193
+ interactionId: z.ZodString;
194
+ actorIds: z.ZodArray<z.ZodString>;
195
+ sealedPlayerIds: z.ZodArray<z.ZodString>;
196
+ pendingPlayerIds: z.ZodArray<z.ZodString>;
197
+ }, z.core.$strict>>;
198
+ }, z.core.$strict>;
199
+ availableInteractions: z.ZodArray<z.ZodObject<{
200
+ phaseName: z.ZodString;
201
+ interactionKey: z.ZodString;
202
+ interactionId: z.ZodString;
203
+ label: z.ZodString;
204
+ help: z.ZodOptional<z.ZodString>;
205
+ zoneId: z.ZodOptional<z.ZodString>;
206
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
207
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
208
+ mode: z.ZodLiteral<"manual">;
209
+ }, z.core.$strict>, z.ZodObject<{
210
+ mode: z.ZodLiteral<"autoWhenReady">;
211
+ }, z.core.$strict>], "mode">;
212
+ descriptorDigest: z.ZodOptional<z.ZodString>;
213
+ actorSeat: z.ZodOptional<z.ZodNumber>;
214
+ draftDigest: z.ZodOptional<z.ZodString>;
215
+ inputs: z.ZodArray<z.ZodObject<{
216
+ key: z.ZodString;
217
+ kind: z.ZodEnum<{
218
+ card: "card";
219
+ form: "form";
220
+ "board-vertex": "board-vertex";
221
+ "board-edge": "board-edge";
222
+ "board-tile": "board-tile";
223
+ "board-space": "board-space";
224
+ rng: "rng";
225
+ }>;
226
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
227
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
228
+ mode: z.ZodLiteral<"single">;
229
+ }, z.core.$strict>, z.ZodObject<{
230
+ mode: z.ZodLiteral<"many">;
231
+ min: z.ZodNumber;
232
+ max: z.ZodOptional<z.ZodNumber>;
233
+ distinct: z.ZodOptional<z.ZodBoolean>;
234
+ }, z.core.$strict>], "mode">>;
235
+ type: z.ZodLiteral<"cardTarget">;
236
+ projection: z.ZodLiteral<"resolved">;
237
+ targetKind: z.ZodLiteral<"card">;
238
+ zoneIds: z.ZodArray<z.ZodString>;
239
+ eligibleTargets: z.ZodArray<z.ZodString>;
240
+ }, z.core.$strict>, z.ZodObject<{
241
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
242
+ mode: z.ZodLiteral<"single">;
243
+ }, z.core.$strict>, z.ZodObject<{
244
+ mode: z.ZodLiteral<"many">;
245
+ min: z.ZodNumber;
246
+ max: z.ZodOptional<z.ZodNumber>;
247
+ distinct: z.ZodOptional<z.ZodBoolean>;
248
+ }, z.core.$strict>], "mode">>;
249
+ type: z.ZodLiteral<"boardTarget">;
250
+ projection: z.ZodLiteral<"resolved">;
251
+ targetKind: z.ZodEnum<{
252
+ edge: "edge";
253
+ vertex: "vertex";
254
+ space: "space";
255
+ tile: "tile";
256
+ }>;
257
+ boardId: z.ZodString;
258
+ valueKind: z.ZodOptional<z.ZodEnum<{
259
+ "board-id": "board-id";
260
+ "player-board-space": "player-board-space";
261
+ }>>;
262
+ eligibleTargets: z.ZodArray<z.ZodString>;
263
+ }, z.core.$strict>, z.ZodObject<{
264
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
265
+ mode: z.ZodLiteral<"single">;
266
+ }, z.core.$strict>, z.ZodObject<{
267
+ mode: z.ZodLiteral<"many">;
268
+ min: z.ZodNumber;
269
+ max: z.ZodOptional<z.ZodNumber>;
270
+ distinct: z.ZodOptional<z.ZodBoolean>;
271
+ }, z.core.$strict>], "mode">>;
272
+ type: z.ZodLiteral<"resourceMap">;
273
+ resources: z.ZodArray<z.ZodObject<{
274
+ resourceId: z.ZodString;
275
+ label: z.ZodOptional<z.ZodString>;
276
+ icon: z.ZodOptional<z.ZodString>;
277
+ min: z.ZodNumber;
278
+ max: z.ZodNumber;
279
+ }, z.core.$strict>>;
280
+ }, z.core.$strict>, z.ZodObject<{
281
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
282
+ mode: z.ZodLiteral<"single">;
283
+ }, z.core.$strict>, z.ZodObject<{
284
+ mode: z.ZodLiteral<"many">;
285
+ min: z.ZodNumber;
286
+ max: z.ZodOptional<z.ZodNumber>;
287
+ distinct: z.ZodOptional<z.ZodBoolean>;
288
+ }, z.core.$strict>], "mode">>;
289
+ type: z.ZodLiteral<"boundedNumber">;
290
+ min: z.ZodNumber;
291
+ max: z.ZodNumber;
292
+ step: z.ZodOptional<z.ZodNumber>;
293
+ }, z.core.$strict>, z.ZodObject<{
294
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
295
+ mode: z.ZodLiteral<"single">;
296
+ }, z.core.$strict>, z.ZodObject<{
297
+ mode: z.ZodLiteral<"many">;
298
+ min: z.ZodNumber;
299
+ max: z.ZodOptional<z.ZodNumber>;
300
+ distinct: z.ZodOptional<z.ZodBoolean>;
301
+ }, z.core.$strict>], "mode">>;
302
+ type: z.ZodLiteral<"choice">;
303
+ choices: z.ZodArray<z.ZodObject<{
304
+ value: z.ZodNullable<z.ZodString>;
305
+ label: z.ZodString;
306
+ icon: z.ZodOptional<z.ZodString>;
307
+ badge: z.ZodOptional<z.ZodString>;
308
+ description: z.ZodOptional<z.ZodString>;
309
+ disabled: z.ZodOptional<z.ZodBoolean>;
310
+ disabledReason: z.ZodOptional<z.ZodString>;
311
+ }, z.core.$strict>>;
312
+ }, z.core.$strict>, z.ZodObject<{
313
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
314
+ mode: z.ZodLiteral<"single">;
315
+ }, z.core.$strict>, z.ZodObject<{
316
+ mode: z.ZodLiteral<"many">;
317
+ min: z.ZodNumber;
318
+ max: z.ZodOptional<z.ZodNumber>;
319
+ distinct: z.ZodOptional<z.ZodBoolean>;
320
+ }, z.core.$strict>], "mode">>;
321
+ type: z.ZodLiteral<"choiceList">;
322
+ choices: z.ZodArray<z.ZodObject<{
323
+ label: z.ZodString;
324
+ icon: z.ZodOptional<z.ZodString>;
325
+ badge: z.ZodOptional<z.ZodString>;
326
+ description: z.ZodOptional<z.ZodString>;
327
+ disabled: z.ZodOptional<z.ZodBoolean>;
328
+ disabledReason: z.ZodOptional<z.ZodString>;
329
+ value: z.ZodString;
330
+ }, z.core.$strict>>;
331
+ min: z.ZodOptional<z.ZodNumber>;
332
+ max: z.ZodOptional<z.ZodNumber>;
333
+ }, z.core.$strict>], "type">;
334
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
335
+ }, z.core.$strict>>;
336
+ step: z.ZodOptional<z.ZodObject<{
337
+ index: z.ZodNumber;
338
+ total: z.ZodNumber;
339
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
340
+ canCancel: z.ZodBoolean;
341
+ }, z.core.$strict>>;
342
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
343
+ status: z.ZodLiteral<"available">;
344
+ }, z.core.$strict>, z.ZodObject<{
345
+ status: z.ZodLiteral<"notYourTurn">;
346
+ reason: z.ZodString;
347
+ }, z.core.$strict>, z.ZodObject<{
348
+ status: z.ZodLiteral<"blocked">;
349
+ reason: z.ZodString;
350
+ code: z.ZodOptional<z.ZodString>;
351
+ }, z.core.$strict>], "status">;
352
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
353
+ ruleId: z.ZodString;
354
+ errorCode: z.ZodString;
355
+ }, z.core.$strict>>>;
356
+ kind: z.ZodLiteral<"action">;
357
+ }, z.core.$strict>>;
358
+ zones: z.ZodRecord<z.ZodString, z.ZodObject<{
359
+ cardIds: z.ZodArray<z.ZodString>;
360
+ cardViewsById: z.ZodRecord<z.ZodString, z.ZodString>;
361
+ playableByCardId: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
362
+ phaseName: z.ZodString;
363
+ interactionKey: z.ZodString;
364
+ interactionId: z.ZodString;
365
+ label: z.ZodString;
366
+ help: z.ZodOptional<z.ZodString>;
367
+ zoneId: z.ZodOptional<z.ZodString>;
368
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
369
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
370
+ mode: z.ZodLiteral<"manual">;
371
+ }, z.core.$strict>, z.ZodObject<{
372
+ mode: z.ZodLiteral<"autoWhenReady">;
373
+ }, z.core.$strict>], "mode">;
374
+ descriptorDigest: z.ZodOptional<z.ZodString>;
375
+ actorSeat: z.ZodOptional<z.ZodNumber>;
376
+ draftDigest: z.ZodOptional<z.ZodString>;
377
+ inputs: z.ZodArray<z.ZodObject<{
378
+ key: z.ZodString;
379
+ kind: z.ZodEnum<{
380
+ card: "card";
381
+ form: "form";
382
+ "board-vertex": "board-vertex";
383
+ "board-edge": "board-edge";
384
+ "board-tile": "board-tile";
385
+ "board-space": "board-space";
386
+ rng: "rng";
387
+ }>;
388
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
389
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
390
+ mode: z.ZodLiteral<"single">;
391
+ }, z.core.$strict>, z.ZodObject<{
392
+ mode: z.ZodLiteral<"many">;
393
+ min: z.ZodNumber;
394
+ max: z.ZodOptional<z.ZodNumber>;
395
+ distinct: z.ZodOptional<z.ZodBoolean>;
396
+ }, z.core.$strict>], "mode">>;
397
+ type: z.ZodLiteral<"cardTarget">;
398
+ projection: z.ZodLiteral<"resolved">;
399
+ targetKind: z.ZodLiteral<"card">;
400
+ zoneIds: z.ZodArray<z.ZodString>;
401
+ eligibleTargets: z.ZodArray<z.ZodString>;
402
+ }, z.core.$strict>, z.ZodObject<{
403
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
404
+ mode: z.ZodLiteral<"single">;
405
+ }, z.core.$strict>, z.ZodObject<{
406
+ mode: z.ZodLiteral<"many">;
407
+ min: z.ZodNumber;
408
+ max: z.ZodOptional<z.ZodNumber>;
409
+ distinct: z.ZodOptional<z.ZodBoolean>;
410
+ }, z.core.$strict>], "mode">>;
411
+ type: z.ZodLiteral<"boardTarget">;
412
+ projection: z.ZodLiteral<"resolved">;
413
+ targetKind: z.ZodEnum<{
414
+ edge: "edge";
415
+ vertex: "vertex";
416
+ space: "space";
417
+ tile: "tile";
418
+ }>;
419
+ boardId: z.ZodString;
420
+ valueKind: z.ZodOptional<z.ZodEnum<{
421
+ "board-id": "board-id";
422
+ "player-board-space": "player-board-space";
423
+ }>>;
424
+ eligibleTargets: z.ZodArray<z.ZodString>;
425
+ }, z.core.$strict>, z.ZodObject<{
426
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
427
+ mode: z.ZodLiteral<"single">;
428
+ }, z.core.$strict>, z.ZodObject<{
429
+ mode: z.ZodLiteral<"many">;
430
+ min: z.ZodNumber;
431
+ max: z.ZodOptional<z.ZodNumber>;
432
+ distinct: z.ZodOptional<z.ZodBoolean>;
433
+ }, z.core.$strict>], "mode">>;
434
+ type: z.ZodLiteral<"resourceMap">;
435
+ resources: z.ZodArray<z.ZodObject<{
436
+ resourceId: z.ZodString;
437
+ label: z.ZodOptional<z.ZodString>;
438
+ icon: z.ZodOptional<z.ZodString>;
439
+ min: z.ZodNumber;
440
+ max: z.ZodNumber;
441
+ }, z.core.$strict>>;
442
+ }, z.core.$strict>, z.ZodObject<{
443
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
444
+ mode: z.ZodLiteral<"single">;
445
+ }, z.core.$strict>, z.ZodObject<{
446
+ mode: z.ZodLiteral<"many">;
447
+ min: z.ZodNumber;
448
+ max: z.ZodOptional<z.ZodNumber>;
449
+ distinct: z.ZodOptional<z.ZodBoolean>;
450
+ }, z.core.$strict>], "mode">>;
451
+ type: z.ZodLiteral<"boundedNumber">;
452
+ min: z.ZodNumber;
453
+ max: z.ZodNumber;
454
+ step: z.ZodOptional<z.ZodNumber>;
455
+ }, z.core.$strict>, z.ZodObject<{
456
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
457
+ mode: z.ZodLiteral<"single">;
458
+ }, z.core.$strict>, z.ZodObject<{
459
+ mode: z.ZodLiteral<"many">;
460
+ min: z.ZodNumber;
461
+ max: z.ZodOptional<z.ZodNumber>;
462
+ distinct: z.ZodOptional<z.ZodBoolean>;
463
+ }, z.core.$strict>], "mode">>;
464
+ type: z.ZodLiteral<"choice">;
465
+ choices: z.ZodArray<z.ZodObject<{
466
+ value: z.ZodNullable<z.ZodString>;
467
+ label: z.ZodString;
468
+ icon: z.ZodOptional<z.ZodString>;
469
+ badge: z.ZodOptional<z.ZodString>;
470
+ description: z.ZodOptional<z.ZodString>;
471
+ disabled: z.ZodOptional<z.ZodBoolean>;
472
+ disabledReason: z.ZodOptional<z.ZodString>;
473
+ }, z.core.$strict>>;
474
+ }, z.core.$strict>, z.ZodObject<{
475
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
476
+ mode: z.ZodLiteral<"single">;
477
+ }, z.core.$strict>, z.ZodObject<{
478
+ mode: z.ZodLiteral<"many">;
479
+ min: z.ZodNumber;
480
+ max: z.ZodOptional<z.ZodNumber>;
481
+ distinct: z.ZodOptional<z.ZodBoolean>;
482
+ }, z.core.$strict>], "mode">>;
483
+ type: z.ZodLiteral<"choiceList">;
484
+ choices: z.ZodArray<z.ZodObject<{
485
+ label: z.ZodString;
486
+ icon: z.ZodOptional<z.ZodString>;
487
+ badge: z.ZodOptional<z.ZodString>;
488
+ description: z.ZodOptional<z.ZodString>;
489
+ disabled: z.ZodOptional<z.ZodBoolean>;
490
+ disabledReason: z.ZodOptional<z.ZodString>;
491
+ value: z.ZodString;
492
+ }, z.core.$strict>>;
493
+ min: z.ZodOptional<z.ZodNumber>;
494
+ max: z.ZodOptional<z.ZodNumber>;
495
+ }, z.core.$strict>], "type">;
496
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
497
+ }, z.core.$strict>>;
498
+ step: z.ZodOptional<z.ZodObject<{
499
+ index: z.ZodNumber;
500
+ total: z.ZodNumber;
501
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
502
+ canCancel: z.ZodBoolean;
503
+ }, z.core.$strict>>;
504
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
505
+ status: z.ZodLiteral<"available">;
506
+ }, z.core.$strict>, z.ZodObject<{
507
+ status: z.ZodLiteral<"notYourTurn">;
508
+ reason: z.ZodString;
509
+ }, z.core.$strict>, z.ZodObject<{
510
+ status: z.ZodLiteral<"blocked">;
511
+ reason: z.ZodString;
512
+ code: z.ZodOptional<z.ZodString>;
513
+ }, z.core.$strict>], "status">;
514
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
515
+ ruleId: z.ZodString;
516
+ errorCode: z.ZodString;
517
+ }, z.core.$strict>>>;
518
+ kind: z.ZodLiteral<"action">;
519
+ }, z.core.$strict>>>;
520
+ }, z.core.$strict>>;
521
+ basis: z.ZodObject<{
522
+ version: z.ZodNumber;
523
+ actionSetVersion: z.ZodString;
524
+ perspectivePlayerId: z.ZodString;
525
+ }, z.core.$strict>;
526
+ }, z.core.$strict>;
527
+ }, z.core.$strip>;
528
+ declare const ClientGameplayFrameSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
529
+ type: z.ZodLiteral<"auth.connect">;
530
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
531
+ kind: z.ZodLiteral<"user">;
532
+ token: z.ZodString;
533
+ }, z.core.$strict>, z.ZodObject<{
534
+ kind: z.ZodLiteral<"demo">;
535
+ secret: z.ZodString;
536
+ }, z.core.$strict>], "kind">;
537
+ sessionId: z.ZodString;
538
+ playerId: z.ZodString;
539
+ }, z.core.$strict>, z.ZodObject<{
540
+ type: z.ZodLiteral<"auth.refresh">;
541
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
542
+ kind: z.ZodLiteral<"user">;
543
+ token: z.ZodString;
544
+ }, z.core.$strict>, z.ZodObject<{
545
+ kind: z.ZodLiteral<"demo">;
546
+ secret: z.ZodString;
547
+ }, z.core.$strict>], "kind">;
548
+ }, z.core.$strict>, z.ZodObject<{
549
+ type: z.ZodLiteral<"session.resume">;
550
+ lastSeenLogCursor: z.ZodNullable<z.ZodNumber>;
551
+ unacknowledgedClientActionIds: z.ZodArray<z.ZodString>;
552
+ }, z.core.$strip>, z.ZodObject<{
553
+ type: z.ZodLiteral<"interaction.submit">;
554
+ clientActionId: z.ZodString;
555
+ basis: z.ZodObject<{
556
+ version: z.ZodNumber;
557
+ actionSetVersion: z.ZodString;
558
+ perspectivePlayerId: z.ZodString;
559
+ }, z.core.$strict>;
560
+ interactionId: z.ZodString;
561
+ params: z.ZodJSONSchema;
562
+ }, z.core.$strict>, z.ZodObject<{
563
+ interactionId: z.ZodString;
564
+ basis: z.ZodObject<{
565
+ version: z.ZodNumber;
566
+ actionSetVersion: z.ZodString;
567
+ perspectivePlayerId: z.ZodString;
568
+ }, z.core.$strict>;
569
+ clientActionId: z.ZodString;
570
+ type: z.ZodLiteral<"interaction.cancel">;
571
+ }, z.core.$strict>], "type">;
572
+ declare const ServerGameplayFrameSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
573
+ type: z.ZodLiteral<"auth.accepted">;
574
+ expiresAt: z.ZodString;
575
+ }, z.core.$strip>, z.ZodObject<{
576
+ type: z.ZodLiteral<"gameplay.backpressure">;
577
+ reason: z.ZodEnum<{
578
+ queue_full: "queue_full";
579
+ capacity_full: "capacity_full";
580
+ }>;
581
+ retryAfterMs: z.ZodNumber;
582
+ message: z.ZodString;
583
+ operation: z.ZodEnum<{
584
+ "interaction.cancel": "interaction.cancel";
585
+ "interaction.submit": "interaction.submit";
586
+ "session.resume": "session.resume";
587
+ }>;
588
+ clientActionId: z.ZodOptional<z.ZodString>;
589
+ }, z.core.$strip>, z.ZodObject<{
590
+ type: z.ZodLiteral<"session.snapshot">;
591
+ frame: z.ZodObject<{
592
+ events: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
593
+ kind: z.ZodLiteral<"systemAction">;
594
+ procedureId: z.ZodString;
595
+ title: z.ZodString;
596
+ summary: z.ZodOptional<z.ZodString>;
597
+ details: z.ZodOptional<z.ZodArray<z.ZodObject<{
598
+ label: z.ZodString;
599
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
600
+ }, z.core.$strict>>>;
601
+ }, z.core.$strict>], "kind">>;
602
+ view: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
603
+ flow: z.ZodObject<{
604
+ currentPhase: z.ZodNullable<z.ZodString>;
605
+ activePlayers: z.ZodArray<z.ZodString>;
606
+ simultaneousPhase: z.ZodNullable<z.ZodObject<{
607
+ phaseName: z.ZodString;
608
+ interactionId: z.ZodString;
609
+ actorIds: z.ZodArray<z.ZodString>;
610
+ sealedPlayerIds: z.ZodArray<z.ZodString>;
611
+ pendingPlayerIds: z.ZodArray<z.ZodString>;
612
+ }, z.core.$strict>>;
613
+ }, z.core.$strict>;
614
+ availableInteractions: z.ZodArray<z.ZodObject<{
615
+ phaseName: z.ZodString;
616
+ interactionKey: z.ZodString;
617
+ interactionId: z.ZodString;
618
+ label: z.ZodString;
619
+ help: z.ZodOptional<z.ZodString>;
620
+ zoneId: z.ZodOptional<z.ZodString>;
621
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
622
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
623
+ mode: z.ZodLiteral<"manual">;
624
+ }, z.core.$strict>, z.ZodObject<{
625
+ mode: z.ZodLiteral<"autoWhenReady">;
626
+ }, z.core.$strict>], "mode">;
627
+ descriptorDigest: z.ZodOptional<z.ZodString>;
628
+ actorSeat: z.ZodOptional<z.ZodNumber>;
629
+ draftDigest: z.ZodOptional<z.ZodString>;
630
+ inputs: z.ZodArray<z.ZodObject<{
631
+ key: z.ZodString;
632
+ kind: z.ZodEnum<{
633
+ card: "card";
634
+ form: "form";
635
+ "board-vertex": "board-vertex";
636
+ "board-edge": "board-edge";
637
+ "board-tile": "board-tile";
638
+ "board-space": "board-space";
639
+ rng: "rng";
640
+ }>;
641
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
642
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
643
+ mode: z.ZodLiteral<"single">;
644
+ }, z.core.$strict>, z.ZodObject<{
645
+ mode: z.ZodLiteral<"many">;
646
+ min: z.ZodNumber;
647
+ max: z.ZodOptional<z.ZodNumber>;
648
+ distinct: z.ZodOptional<z.ZodBoolean>;
649
+ }, z.core.$strict>], "mode">>;
650
+ type: z.ZodLiteral<"cardTarget">;
651
+ projection: z.ZodLiteral<"resolved">;
652
+ targetKind: z.ZodLiteral<"card">;
653
+ zoneIds: z.ZodArray<z.ZodString>;
654
+ eligibleTargets: z.ZodArray<z.ZodString>;
655
+ }, z.core.$strict>, z.ZodObject<{
656
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
657
+ mode: z.ZodLiteral<"single">;
658
+ }, z.core.$strict>, z.ZodObject<{
659
+ mode: z.ZodLiteral<"many">;
660
+ min: z.ZodNumber;
661
+ max: z.ZodOptional<z.ZodNumber>;
662
+ distinct: z.ZodOptional<z.ZodBoolean>;
663
+ }, z.core.$strict>], "mode">>;
664
+ type: z.ZodLiteral<"boardTarget">;
665
+ projection: z.ZodLiteral<"resolved">;
666
+ targetKind: z.ZodEnum<{
667
+ edge: "edge";
668
+ vertex: "vertex";
669
+ space: "space";
670
+ tile: "tile";
671
+ }>;
672
+ boardId: z.ZodString;
673
+ valueKind: z.ZodOptional<z.ZodEnum<{
674
+ "board-id": "board-id";
675
+ "player-board-space": "player-board-space";
676
+ }>>;
677
+ eligibleTargets: z.ZodArray<z.ZodString>;
678
+ }, z.core.$strict>, z.ZodObject<{
679
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
680
+ mode: z.ZodLiteral<"single">;
681
+ }, z.core.$strict>, z.ZodObject<{
682
+ mode: z.ZodLiteral<"many">;
683
+ min: z.ZodNumber;
684
+ max: z.ZodOptional<z.ZodNumber>;
685
+ distinct: z.ZodOptional<z.ZodBoolean>;
686
+ }, z.core.$strict>], "mode">>;
687
+ type: z.ZodLiteral<"resourceMap">;
688
+ resources: z.ZodArray<z.ZodObject<{
689
+ resourceId: z.ZodString;
690
+ label: z.ZodOptional<z.ZodString>;
691
+ icon: z.ZodOptional<z.ZodString>;
692
+ min: z.ZodNumber;
693
+ max: z.ZodNumber;
694
+ }, z.core.$strict>>;
695
+ }, z.core.$strict>, z.ZodObject<{
696
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
697
+ mode: z.ZodLiteral<"single">;
698
+ }, z.core.$strict>, z.ZodObject<{
699
+ mode: z.ZodLiteral<"many">;
700
+ min: z.ZodNumber;
701
+ max: z.ZodOptional<z.ZodNumber>;
702
+ distinct: z.ZodOptional<z.ZodBoolean>;
703
+ }, z.core.$strict>], "mode">>;
704
+ type: z.ZodLiteral<"boundedNumber">;
705
+ min: z.ZodNumber;
706
+ max: z.ZodNumber;
707
+ step: z.ZodOptional<z.ZodNumber>;
708
+ }, z.core.$strict>, z.ZodObject<{
709
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
710
+ mode: z.ZodLiteral<"single">;
711
+ }, z.core.$strict>, z.ZodObject<{
712
+ mode: z.ZodLiteral<"many">;
713
+ min: z.ZodNumber;
714
+ max: z.ZodOptional<z.ZodNumber>;
715
+ distinct: z.ZodOptional<z.ZodBoolean>;
716
+ }, z.core.$strict>], "mode">>;
717
+ type: z.ZodLiteral<"choice">;
718
+ choices: z.ZodArray<z.ZodObject<{
719
+ value: z.ZodNullable<z.ZodString>;
720
+ label: z.ZodString;
721
+ icon: z.ZodOptional<z.ZodString>;
722
+ badge: z.ZodOptional<z.ZodString>;
723
+ description: z.ZodOptional<z.ZodString>;
724
+ disabled: z.ZodOptional<z.ZodBoolean>;
725
+ disabledReason: z.ZodOptional<z.ZodString>;
726
+ }, z.core.$strict>>;
727
+ }, z.core.$strict>, z.ZodObject<{
728
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
729
+ mode: z.ZodLiteral<"single">;
730
+ }, z.core.$strict>, z.ZodObject<{
731
+ mode: z.ZodLiteral<"many">;
732
+ min: z.ZodNumber;
733
+ max: z.ZodOptional<z.ZodNumber>;
734
+ distinct: z.ZodOptional<z.ZodBoolean>;
735
+ }, z.core.$strict>], "mode">>;
736
+ type: z.ZodLiteral<"choiceList">;
737
+ choices: z.ZodArray<z.ZodObject<{
738
+ label: z.ZodString;
739
+ icon: z.ZodOptional<z.ZodString>;
740
+ badge: z.ZodOptional<z.ZodString>;
741
+ description: z.ZodOptional<z.ZodString>;
742
+ disabled: z.ZodOptional<z.ZodBoolean>;
743
+ disabledReason: z.ZodOptional<z.ZodString>;
744
+ value: z.ZodString;
745
+ }, z.core.$strict>>;
746
+ min: z.ZodOptional<z.ZodNumber>;
747
+ max: z.ZodOptional<z.ZodNumber>;
748
+ }, z.core.$strict>], "type">;
749
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
750
+ }, z.core.$strict>>;
751
+ step: z.ZodOptional<z.ZodObject<{
752
+ index: z.ZodNumber;
753
+ total: z.ZodNumber;
754
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
755
+ canCancel: z.ZodBoolean;
756
+ }, z.core.$strict>>;
757
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
758
+ status: z.ZodLiteral<"available">;
759
+ }, z.core.$strict>, z.ZodObject<{
760
+ status: z.ZodLiteral<"notYourTurn">;
761
+ reason: z.ZodString;
762
+ }, z.core.$strict>, z.ZodObject<{
763
+ status: z.ZodLiteral<"blocked">;
764
+ reason: z.ZodString;
765
+ code: z.ZodOptional<z.ZodString>;
766
+ }, z.core.$strict>], "status">;
767
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
768
+ ruleId: z.ZodString;
769
+ errorCode: z.ZodString;
770
+ }, z.core.$strict>>>;
771
+ kind: z.ZodLiteral<"action">;
772
+ }, z.core.$strict>>;
773
+ zones: z.ZodRecord<z.ZodString, z.ZodObject<{
774
+ cardIds: z.ZodArray<z.ZodString>;
775
+ cardViewsById: z.ZodRecord<z.ZodString, z.ZodString>;
776
+ playableByCardId: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
777
+ phaseName: z.ZodString;
778
+ interactionKey: z.ZodString;
779
+ interactionId: z.ZodString;
780
+ label: z.ZodString;
781
+ help: z.ZodOptional<z.ZodString>;
782
+ zoneId: z.ZodOptional<z.ZodString>;
783
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
784
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
785
+ mode: z.ZodLiteral<"manual">;
786
+ }, z.core.$strict>, z.ZodObject<{
787
+ mode: z.ZodLiteral<"autoWhenReady">;
788
+ }, z.core.$strict>], "mode">;
789
+ descriptorDigest: z.ZodOptional<z.ZodString>;
790
+ actorSeat: z.ZodOptional<z.ZodNumber>;
791
+ draftDigest: z.ZodOptional<z.ZodString>;
792
+ inputs: z.ZodArray<z.ZodObject<{
793
+ key: z.ZodString;
794
+ kind: z.ZodEnum<{
795
+ card: "card";
796
+ form: "form";
797
+ "board-vertex": "board-vertex";
798
+ "board-edge": "board-edge";
799
+ "board-tile": "board-tile";
800
+ "board-space": "board-space";
801
+ rng: "rng";
802
+ }>;
803
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
804
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
805
+ mode: z.ZodLiteral<"single">;
806
+ }, z.core.$strict>, z.ZodObject<{
807
+ mode: z.ZodLiteral<"many">;
808
+ min: z.ZodNumber;
809
+ max: z.ZodOptional<z.ZodNumber>;
810
+ distinct: z.ZodOptional<z.ZodBoolean>;
811
+ }, z.core.$strict>], "mode">>;
812
+ type: z.ZodLiteral<"cardTarget">;
813
+ projection: z.ZodLiteral<"resolved">;
814
+ targetKind: z.ZodLiteral<"card">;
815
+ zoneIds: z.ZodArray<z.ZodString>;
816
+ eligibleTargets: z.ZodArray<z.ZodString>;
817
+ }, z.core.$strict>, z.ZodObject<{
818
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
819
+ mode: z.ZodLiteral<"single">;
820
+ }, z.core.$strict>, z.ZodObject<{
821
+ mode: z.ZodLiteral<"many">;
822
+ min: z.ZodNumber;
823
+ max: z.ZodOptional<z.ZodNumber>;
824
+ distinct: z.ZodOptional<z.ZodBoolean>;
825
+ }, z.core.$strict>], "mode">>;
826
+ type: z.ZodLiteral<"boardTarget">;
827
+ projection: z.ZodLiteral<"resolved">;
828
+ targetKind: z.ZodEnum<{
829
+ edge: "edge";
830
+ vertex: "vertex";
831
+ space: "space";
832
+ tile: "tile";
833
+ }>;
834
+ boardId: z.ZodString;
835
+ valueKind: z.ZodOptional<z.ZodEnum<{
836
+ "board-id": "board-id";
837
+ "player-board-space": "player-board-space";
838
+ }>>;
839
+ eligibleTargets: z.ZodArray<z.ZodString>;
840
+ }, z.core.$strict>, z.ZodObject<{
841
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
842
+ mode: z.ZodLiteral<"single">;
843
+ }, z.core.$strict>, z.ZodObject<{
844
+ mode: z.ZodLiteral<"many">;
845
+ min: z.ZodNumber;
846
+ max: z.ZodOptional<z.ZodNumber>;
847
+ distinct: z.ZodOptional<z.ZodBoolean>;
848
+ }, z.core.$strict>], "mode">>;
849
+ type: z.ZodLiteral<"resourceMap">;
850
+ resources: z.ZodArray<z.ZodObject<{
851
+ resourceId: z.ZodString;
852
+ label: z.ZodOptional<z.ZodString>;
853
+ icon: z.ZodOptional<z.ZodString>;
854
+ min: z.ZodNumber;
855
+ max: z.ZodNumber;
856
+ }, z.core.$strict>>;
857
+ }, z.core.$strict>, z.ZodObject<{
858
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
859
+ mode: z.ZodLiteral<"single">;
860
+ }, z.core.$strict>, z.ZodObject<{
861
+ mode: z.ZodLiteral<"many">;
862
+ min: z.ZodNumber;
863
+ max: z.ZodOptional<z.ZodNumber>;
864
+ distinct: z.ZodOptional<z.ZodBoolean>;
865
+ }, z.core.$strict>], "mode">>;
866
+ type: z.ZodLiteral<"boundedNumber">;
867
+ min: z.ZodNumber;
868
+ max: z.ZodNumber;
869
+ step: z.ZodOptional<z.ZodNumber>;
870
+ }, z.core.$strict>, z.ZodObject<{
871
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
872
+ mode: z.ZodLiteral<"single">;
873
+ }, z.core.$strict>, z.ZodObject<{
874
+ mode: z.ZodLiteral<"many">;
875
+ min: z.ZodNumber;
876
+ max: z.ZodOptional<z.ZodNumber>;
877
+ distinct: z.ZodOptional<z.ZodBoolean>;
878
+ }, z.core.$strict>], "mode">>;
879
+ type: z.ZodLiteral<"choice">;
880
+ choices: z.ZodArray<z.ZodObject<{
881
+ value: z.ZodNullable<z.ZodString>;
882
+ label: z.ZodString;
883
+ icon: z.ZodOptional<z.ZodString>;
884
+ badge: z.ZodOptional<z.ZodString>;
885
+ description: z.ZodOptional<z.ZodString>;
886
+ disabled: z.ZodOptional<z.ZodBoolean>;
887
+ disabledReason: z.ZodOptional<z.ZodString>;
888
+ }, z.core.$strict>>;
889
+ }, z.core.$strict>, z.ZodObject<{
890
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
891
+ mode: z.ZodLiteral<"single">;
892
+ }, z.core.$strict>, z.ZodObject<{
893
+ mode: z.ZodLiteral<"many">;
894
+ min: z.ZodNumber;
895
+ max: z.ZodOptional<z.ZodNumber>;
896
+ distinct: z.ZodOptional<z.ZodBoolean>;
897
+ }, z.core.$strict>], "mode">>;
898
+ type: z.ZodLiteral<"choiceList">;
899
+ choices: z.ZodArray<z.ZodObject<{
900
+ label: z.ZodString;
901
+ icon: z.ZodOptional<z.ZodString>;
902
+ badge: z.ZodOptional<z.ZodString>;
903
+ description: z.ZodOptional<z.ZodString>;
904
+ disabled: z.ZodOptional<z.ZodBoolean>;
905
+ disabledReason: z.ZodOptional<z.ZodString>;
906
+ value: z.ZodString;
907
+ }, z.core.$strict>>;
908
+ min: z.ZodOptional<z.ZodNumber>;
909
+ max: z.ZodOptional<z.ZodNumber>;
910
+ }, z.core.$strict>], "type">;
911
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
912
+ }, z.core.$strict>>;
913
+ step: z.ZodOptional<z.ZodObject<{
914
+ index: z.ZodNumber;
915
+ total: z.ZodNumber;
916
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
917
+ canCancel: z.ZodBoolean;
918
+ }, z.core.$strict>>;
919
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
920
+ status: z.ZodLiteral<"available">;
921
+ }, z.core.$strict>, z.ZodObject<{
922
+ status: z.ZodLiteral<"notYourTurn">;
923
+ reason: z.ZodString;
924
+ }, z.core.$strict>, z.ZodObject<{
925
+ status: z.ZodLiteral<"blocked">;
926
+ reason: z.ZodString;
927
+ code: z.ZodOptional<z.ZodString>;
928
+ }, z.core.$strict>], "status">;
929
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
930
+ ruleId: z.ZodString;
931
+ errorCode: z.ZodString;
932
+ }, z.core.$strict>>>;
933
+ kind: z.ZodLiteral<"action">;
934
+ }, z.core.$strict>>>;
935
+ }, z.core.$strict>>;
936
+ basis: z.ZodObject<{
937
+ version: z.ZodNumber;
938
+ actionSetVersion: z.ZodString;
939
+ perspectivePlayerId: z.ZodString;
940
+ }, z.core.$strict>;
941
+ }, z.core.$strict>;
942
+ }, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
943
+ type: z.ZodLiteral<"interaction.result">;
944
+ clientActionId: z.ZodString;
945
+ accepted: z.ZodLiteral<true>;
946
+ }, z.core.$strict>, z.ZodObject<{
947
+ type: z.ZodLiteral<"interaction.result">;
948
+ clientActionId: z.ZodString;
949
+ accepted: z.ZodLiteral<false>;
950
+ errorCode: z.ZodString;
951
+ message: z.ZodOptional<z.ZodString>;
952
+ }, z.core.$strict>], "accepted">], "type">;
953
+ type GameplayCredential = z.infer<typeof GameplayCredentialSchema>;
954
+ type ClientGameplayFrame = z.infer<typeof ClientGameplayFrameSchema>;
955
+ type ServerGameplayFrame = z.infer<typeof ServerGameplayFrameSchema>;
956
+
957
+ declare function hostSource(options: {
958
+ url: string;
959
+ session: PluginSessionDescriptor;
960
+ playerId: string;
961
+ getCredential(): Promise<GameplayCredential>;
962
+ timeoutMs?: number;
963
+ }): CommandSource;
964
+
965
+ interface HandOptions<G> {
966
+ /** Compare projected card data only; hidden cards never expose private fields. */
967
+ readonly sort?: (left: Card<G, Record<never, never>>, right: Card<G, Record<never, never>>) => number;
968
+ }
969
+ /** Optional hand helpers reuse the zone order and the core selection router. */
970
+ declare function handFeature<G>(_game: CoreInstance<G>, options?: HandOptions<G>): {
971
+ zone: {
972
+ getSortedCardIds(this: Zone<G, Record<never, never>>): readonly IdOf<G, "cardId">[];
973
+ getSelectedCardIds(this: Zone<G, Record<never, never>>): readonly IdOf<G, "cardId">[];
974
+ getSelectableCardIds(this: Zone<G, Record<never, never>>): readonly IdOf<G, "cardId">[];
975
+ };
976
+ };
977
+
978
+ /** Native pointer surface; importing a feature never requires browser globals. */
979
+ interface PointerSurface {
980
+ setPointerCapture(pointerId: number): void;
981
+ hasPointerCapture(pointerId: number): boolean;
982
+ releasePointerCapture(pointerId: number): void;
983
+ }
984
+ interface PointerInput {
985
+ readonly pointerId: number;
986
+ readonly button: number;
987
+ readonly clientX: number;
988
+ readonly clientY: number;
989
+ readonly currentTarget: PointerSurface;
990
+ preventDefault(): void;
991
+ }
992
+ interface Point {
993
+ readonly x: number;
994
+ readonly y: number;
995
+ }
996
+
997
+ interface ViewportTransform {
998
+ readonly x: number;
999
+ readonly y: number;
1000
+ readonly scale: number;
1001
+ }
1002
+ interface ViewportSurface extends PointerSurface {
1003
+ getBoundingClientRect(): {
1004
+ readonly left: number;
1005
+ readonly top: number;
1006
+ readonly height: number;
1007
+ };
1008
+ }
1009
+ interface WheelInput {
1010
+ readonly clientX: number;
1011
+ readonly clientY: number;
1012
+ readonly deltaY: number;
1013
+ readonly deltaMode: number;
1014
+ readonly currentTarget: ViewportSurface;
1015
+ preventDefault(): void;
1016
+ }
1017
+ interface PanZoomOptions {
1018
+ readonly initial?: ViewportTransform;
1019
+ readonly minScale?: number;
1020
+ readonly maxScale?: number;
1021
+ }
1022
+ /** Native pointer panning and wheel zoom around the cursor. No document listeners. */
1023
+ declare function panZoomFeature<G>(game: CoreInstance<G>, context: FeatureContext<G>, options?: PanZoomOptions): {
1024
+ root: {
1025
+ readonly viewport: Readonly<{
1026
+ transform: ViewportTransform;
1027
+ getTransform: () => ViewportTransform;
1028
+ getProps: () => {
1029
+ style: {
1030
+ touchAction: "none";
1031
+ };
1032
+ onPointerDown(event: PointerInput): void;
1033
+ onPointerMove: (event: PointerInput) => void;
1034
+ onPointerUp: (event: PointerInput) => void;
1035
+ onPointerCancel: (event?: Pick<PointerInput, "pointerId">) => void;
1036
+ onLostPointerCapture: (event?: Pick<PointerInput, "pointerId">) => void;
1037
+ onWheel(event: WheelInput): void;
1038
+ };
1039
+ setTransform: (value: ViewportTransform) => void;
1040
+ reset: () => void;
1041
+ }>;
1042
+ };
1043
+ dispose(): void;
1044
+ };
1045
+
1046
+ interface BoardLayoutOptions {
1047
+ /** Hex radius, or square cell width and height. */
1048
+ readonly hexSize: number;
1049
+ readonly origin?: Point;
1050
+ readonly viewport?: ViewportTransform;
1051
+ }
1052
+ /** Static topology plus captured seat selection. Generic boards remain data-only. */
1053
+ declare function boardFeature<G>(game: CoreInstance<G>, context: FeatureContext<G>): {
1054
+ root: {
1055
+ readonly boards: BoardCollection<G, Record<never, never>>;
1056
+ };
1057
+ board: {
1058
+ getLayout(this: BoardBase<G>, options: BoardLayoutOptions): Readonly<{
1059
+ viewBox: Readonly<{
1060
+ x: number;
1061
+ y: number;
1062
+ width: number;
1063
+ height: number;
1064
+ }>;
1065
+ getSpaces: () => readonly Readonly<{
1066
+ data: RuntimeHexSpaceState | RuntimeSquareSpaceState;
1067
+ center: Point;
1068
+ points: () => readonly Point[];
1069
+ transform: `translate(${number} ${number})`;
1070
+ id: string;
1071
+ getIsEligible: () => boolean;
1072
+ getIsSelectable: () => boolean;
1073
+ getIsSelected: () => boolean;
1074
+ getSelectHandler: (options?: {
1075
+ interaction?: InteractionKey<G>;
1076
+ }) => () => void;
1077
+ getTargetProps(options?: {
1078
+ interaction?: InteractionKey<G>;
1079
+ }): {
1080
+ type: "button";
1081
+ disabled: boolean;
1082
+ "data-action": string;
1083
+ "data-value": string;
1084
+ "data-board": string;
1085
+ "data-interaction": InteractionKey<G> | undefined;
1086
+ "data-input": InputKey<G, InteractionKey<G>> | undefined;
1087
+ "data-eligible": boolean;
1088
+ "data-selected": boolean;
1089
+ "data-disabled": boolean;
1090
+ onClick: () => void;
1091
+ };
1092
+ }>[];
1093
+ getEdges: () => readonly Readonly<{
1094
+ data: RuntimeTiledEdgeState | undefined;
1095
+ center: Point;
1096
+ line: readonly [Point, Point];
1097
+ id: string;
1098
+ getIsEligible: () => boolean;
1099
+ getIsSelectable: () => boolean;
1100
+ getIsSelected: () => boolean;
1101
+ getSelectHandler: (options?: {
1102
+ interaction?: InteractionKey<G>;
1103
+ }) => () => void;
1104
+ getTargetProps(options?: {
1105
+ interaction?: InteractionKey<G>;
1106
+ }): {
1107
+ type: "button";
1108
+ disabled: boolean;
1109
+ "data-action": string;
1110
+ "data-value": string;
1111
+ "data-board": string;
1112
+ "data-interaction": InteractionKey<G> | undefined;
1113
+ "data-input": InputKey<G, InteractionKey<G>> | undefined;
1114
+ "data-eligible": boolean;
1115
+ "data-selected": boolean;
1116
+ "data-disabled": boolean;
1117
+ onClick: () => void;
1118
+ };
1119
+ }>[];
1120
+ getVertices: () => readonly Readonly<{
1121
+ data: RuntimeTiledVertexState | undefined;
1122
+ center: Point;
1123
+ id: string;
1124
+ getIsEligible: () => boolean;
1125
+ getIsSelectable: () => boolean;
1126
+ getIsSelected: () => boolean;
1127
+ getSelectHandler: (options?: {
1128
+ interaction?: InteractionKey<G>;
1129
+ }) => () => void;
1130
+ getTargetProps(options?: {
1131
+ interaction?: InteractionKey<G>;
1132
+ }): {
1133
+ type: "button";
1134
+ disabled: boolean;
1135
+ "data-action": string;
1136
+ "data-value": string;
1137
+ "data-board": string;
1138
+ "data-interaction": InteractionKey<G> | undefined;
1139
+ "data-input": InputKey<G, InteractionKey<G>> | undefined;
1140
+ "data-eligible": boolean;
1141
+ "data-selected": boolean;
1142
+ "data-disabled": boolean;
1143
+ onClick: () => void;
1144
+ };
1145
+ }>[];
1146
+ pointToSpace(x: number, y: number): string | undefined;
1147
+ }>;
1148
+ };
1149
+ };
1150
+
1151
+ interface DropTarget<G> {
1152
+ readonly kind: "space" | "edge" | "vertex" | "tile";
1153
+ readonly id: string;
1154
+ readonly boardId: IdOf<G, "boardId">;
1155
+ readonly interaction: InteractionKey<G>;
1156
+ }
1157
+ interface DragState<G> {
1158
+ readonly cardId: IdOf<G, "cardId">;
1159
+ readonly offset: Point;
1160
+ readonly target: DropTarget<G> | null;
1161
+ }
1162
+ /** Card drag state and native props. The core router owns atomic card/drop writes. */
1163
+ declare function dragFeature<G>(game: CoreInstance<G>, context: FeatureContext<G>): {
1164
+ root: {
1165
+ readonly drag: Readonly<{
1166
+ active: DragState<G> | null;
1167
+ getDropTargets: () => readonly DropTarget<G>[];
1168
+ setDropTarget(target: DropTarget<G> | null): void;
1169
+ cancel: () => void;
1170
+ }>;
1171
+ };
1172
+ card: {
1173
+ getDragProps(this: CardBase<G>, options?: {
1174
+ interaction?: InteractionKey<G>;
1175
+ }): {
1176
+ style: {
1177
+ touchAction: "none";
1178
+ transform: string | undefined;
1179
+ };
1180
+ "data-drag-card": IdOf<G, "cardId">;
1181
+ onPointerDown: (event: PointerInput) => void;
1182
+ onClick: (event: {
1183
+ detail: number;
1184
+ preventDefault(): void;
1185
+ }) => void;
1186
+ onPointerMove: (event: PointerInput) => void;
1187
+ onPointerUp: (event: PointerInput) => void;
1188
+ onPointerCancel: (event?: Pick<PointerInput, "pointerId">) => void;
1189
+ onLostPointerCapture: (event?: Pick<PointerInput, "pointerId">) => void;
1190
+ };
1191
+ };
1192
+ dispose(): void;
1193
+ };
1194
+
1195
+ declare function canonicalizePluginRuntimeJson(value: unknown): RuntimeJson;
1196
+ declare function encodeCanonicalPluginRuntimeJson(value: unknown): string;
1197
+ declare function digestPluginRuntimeJson(value: unknown): string;
1198
+
1199
+ declare function computePluginActionSetVersion(input: ActionSetVersionInput): string;
1200
+ declare function digestPluginGameplayFrame(frame: PluginGameplayFrame): string;
1201
+ declare function digestPluginCommandRequest(command: SubmitInteractionCommand | CancelInteractionCommand): string;
1202
+
1203
+ interface MaterializePluginGameplayFrameInput {
1204
+ readonly currentPhase: string | null;
1205
+ readonly activePlayers: readonly PlayerId[];
1206
+ readonly dynamicProjection: ReducerSeatProjectionBundle;
1207
+ readonly staticProjection?: ReducerBoardStaticProjection | null;
1208
+ readonly perspectivePlayerId: PlayerId;
1209
+ readonly version: number;
1210
+ readonly actionSetVersion: string;
1211
+ }
1212
+ declare function materializePluginGameplayFrame(input: MaterializePluginGameplayFrameInput): PluginGameplayFrame;
1213
+
1214
+ declare const BoardStaticProjectionSchema: z.ZodObject<{
1215
+ view: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
1216
+ hash: z.ZodString;
1217
+ manifestVersion: z.ZodString;
1218
+ }, z.core.$strict>;
1219
+ declare const GameEventDetailSchema: z.ZodObject<{
1220
+ label: z.ZodString;
1221
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
1222
+ }, z.core.$strict>;
1223
+ declare const SystemActionEventSchema: z.ZodObject<{
1224
+ kind: z.ZodLiteral<"systemAction">;
1225
+ procedureId: z.ZodString;
1226
+ title: z.ZodString;
1227
+ summary: z.ZodOptional<z.ZodString>;
1228
+ details: z.ZodOptional<z.ZodArray<z.ZodObject<{
1229
+ label: z.ZodString;
1230
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
1231
+ }, z.core.$strict>>>;
1232
+ }, z.core.$strict>;
1233
+ declare const GameEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1234
+ kind: z.ZodLiteral<"systemAction">;
1235
+ procedureId: z.ZodString;
1236
+ title: z.ZodString;
1237
+ summary: z.ZodOptional<z.ZodString>;
1238
+ details: z.ZodOptional<z.ZodArray<z.ZodObject<{
1239
+ label: z.ZodString;
1240
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
1241
+ }, z.core.$strict>>>;
1242
+ }, z.core.$strict>], "kind">;
1243
+ declare const SeatProjectionBundleSchema: z.ZodObject<{
1244
+ events: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1245
+ kind: z.ZodLiteral<"systemAction">;
1246
+ procedureId: z.ZodString;
1247
+ title: z.ZodString;
1248
+ summary: z.ZodOptional<z.ZodString>;
1249
+ details: z.ZodOptional<z.ZodArray<z.ZodObject<{
1250
+ label: z.ZodString;
1251
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
1252
+ }, z.core.$strict>>>;
1253
+ }, z.core.$strict>], "kind">>;
1254
+ simultaneousPhase: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
1255
+ phaseName: z.ZodString;
1256
+ interactionId: z.ZodString;
1257
+ actorIds: z.ZodArray<z.ZodString>;
1258
+ sealedPlayerIds: z.ZodArray<z.ZodString>;
1259
+ pendingPlayerIds: z.ZodArray<z.ZodString>;
1260
+ }, z.core.$strict>, z.ZodNull]>>;
1261
+ schedulerFlow: z.ZodOptional<z.ZodObject<{
1262
+ version: z.ZodLiteral<1>;
1263
+ activePlayerIds: z.ZodArray<z.ZodString>;
1264
+ pendingPlayerIds: z.ZodArray<z.ZodString>;
1265
+ continuationDependencies: z.ZodArray<z.ZodObject<{
1266
+ waiterPlayerId: z.ZodString;
1267
+ blockerPlayerIds: z.ZodArray<z.ZodString>;
1268
+ }, z.core.$strict>>;
1269
+ }, z.core.$strict>>;
1270
+ interactionsByRef: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1271
+ phaseName: z.ZodString;
1272
+ interactionKey: z.ZodString;
1273
+ interactionId: z.ZodString;
1274
+ label: z.ZodString;
1275
+ help: z.ZodOptional<z.ZodString>;
1276
+ zoneId: z.ZodOptional<z.ZodString>;
1277
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1278
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
1279
+ mode: z.ZodLiteral<"manual">;
1280
+ }, z.core.$strict>, z.ZodObject<{
1281
+ mode: z.ZodLiteral<"autoWhenReady">;
1282
+ }, z.core.$strict>], "mode">;
1283
+ descriptorDigest: z.ZodOptional<z.ZodString>;
1284
+ actorSeat: z.ZodOptional<z.ZodNumber>;
1285
+ draftDigest: z.ZodOptional<z.ZodString>;
1286
+ inputs: z.ZodArray<z.ZodObject<{
1287
+ key: z.ZodString;
1288
+ kind: z.ZodEnum<{
1289
+ card: "card";
1290
+ form: "form";
1291
+ "board-vertex": "board-vertex";
1292
+ "board-edge": "board-edge";
1293
+ "board-tile": "board-tile";
1294
+ "board-space": "board-space";
1295
+ rng: "rng";
1296
+ }>;
1297
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
1298
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1299
+ mode: z.ZodLiteral<"single">;
1300
+ }, z.core.$strict>, z.ZodObject<{
1301
+ mode: z.ZodLiteral<"many">;
1302
+ min: z.ZodNumber;
1303
+ max: z.ZodOptional<z.ZodNumber>;
1304
+ distinct: z.ZodOptional<z.ZodBoolean>;
1305
+ }, z.core.$strict>], "mode">>;
1306
+ type: z.ZodLiteral<"cardTarget">;
1307
+ projection: z.ZodLiteral<"resolved">;
1308
+ targetKind: z.ZodLiteral<"card">;
1309
+ zoneIds: z.ZodArray<z.ZodString>;
1310
+ eligibleTargets: z.ZodArray<z.ZodString>;
1311
+ }, z.core.$strict>, z.ZodObject<{
1312
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1313
+ mode: z.ZodLiteral<"single">;
1314
+ }, z.core.$strict>, z.ZodObject<{
1315
+ mode: z.ZodLiteral<"many">;
1316
+ min: z.ZodNumber;
1317
+ max: z.ZodOptional<z.ZodNumber>;
1318
+ distinct: z.ZodOptional<z.ZodBoolean>;
1319
+ }, z.core.$strict>], "mode">>;
1320
+ type: z.ZodLiteral<"boardTarget">;
1321
+ projection: z.ZodLiteral<"resolved">;
1322
+ targetKind: z.ZodEnum<{
1323
+ edge: "edge";
1324
+ vertex: "vertex";
1325
+ space: "space";
1326
+ tile: "tile";
1327
+ }>;
1328
+ boardId: z.ZodString;
1329
+ valueKind: z.ZodOptional<z.ZodEnum<{
1330
+ "board-id": "board-id";
1331
+ "player-board-space": "player-board-space";
1332
+ }>>;
1333
+ eligibleTargets: z.ZodArray<z.ZodString>;
1334
+ }, z.core.$strict>, z.ZodObject<{
1335
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1336
+ mode: z.ZodLiteral<"single">;
1337
+ }, z.core.$strict>, z.ZodObject<{
1338
+ mode: z.ZodLiteral<"many">;
1339
+ min: z.ZodNumber;
1340
+ max: z.ZodOptional<z.ZodNumber>;
1341
+ distinct: z.ZodOptional<z.ZodBoolean>;
1342
+ }, z.core.$strict>], "mode">>;
1343
+ type: z.ZodLiteral<"resourceMap">;
1344
+ resources: z.ZodArray<z.ZodObject<{
1345
+ resourceId: z.ZodString;
1346
+ label: z.ZodOptional<z.ZodString>;
1347
+ icon: z.ZodOptional<z.ZodString>;
1348
+ min: z.ZodNumber;
1349
+ max: z.ZodNumber;
1350
+ }, z.core.$strict>>;
1351
+ }, z.core.$strict>, z.ZodObject<{
1352
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1353
+ mode: z.ZodLiteral<"single">;
1354
+ }, z.core.$strict>, z.ZodObject<{
1355
+ mode: z.ZodLiteral<"many">;
1356
+ min: z.ZodNumber;
1357
+ max: z.ZodOptional<z.ZodNumber>;
1358
+ distinct: z.ZodOptional<z.ZodBoolean>;
1359
+ }, z.core.$strict>], "mode">>;
1360
+ type: z.ZodLiteral<"boundedNumber">;
1361
+ min: z.ZodNumber;
1362
+ max: z.ZodNumber;
1363
+ step: z.ZodOptional<z.ZodNumber>;
1364
+ }, z.core.$strict>, z.ZodObject<{
1365
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1366
+ mode: z.ZodLiteral<"single">;
1367
+ }, z.core.$strict>, z.ZodObject<{
1368
+ mode: z.ZodLiteral<"many">;
1369
+ min: z.ZodNumber;
1370
+ max: z.ZodOptional<z.ZodNumber>;
1371
+ distinct: z.ZodOptional<z.ZodBoolean>;
1372
+ }, z.core.$strict>], "mode">>;
1373
+ type: z.ZodLiteral<"choice">;
1374
+ choices: z.ZodArray<z.ZodObject<{
1375
+ value: z.ZodNullable<z.ZodString>;
1376
+ label: z.ZodString;
1377
+ icon: z.ZodOptional<z.ZodString>;
1378
+ badge: z.ZodOptional<z.ZodString>;
1379
+ description: z.ZodOptional<z.ZodString>;
1380
+ disabled: z.ZodOptional<z.ZodBoolean>;
1381
+ disabledReason: z.ZodOptional<z.ZodString>;
1382
+ }, z.core.$strict>>;
1383
+ }, z.core.$strict>, z.ZodObject<{
1384
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1385
+ mode: z.ZodLiteral<"single">;
1386
+ }, z.core.$strict>, z.ZodObject<{
1387
+ mode: z.ZodLiteral<"many">;
1388
+ min: z.ZodNumber;
1389
+ max: z.ZodOptional<z.ZodNumber>;
1390
+ distinct: z.ZodOptional<z.ZodBoolean>;
1391
+ }, z.core.$strict>], "mode">>;
1392
+ type: z.ZodLiteral<"choiceList">;
1393
+ choices: z.ZodArray<z.ZodObject<{
1394
+ label: z.ZodString;
1395
+ icon: z.ZodOptional<z.ZodString>;
1396
+ badge: z.ZodOptional<z.ZodString>;
1397
+ description: z.ZodOptional<z.ZodString>;
1398
+ disabled: z.ZodOptional<z.ZodBoolean>;
1399
+ disabledReason: z.ZodOptional<z.ZodString>;
1400
+ value: z.ZodString;
1401
+ }, z.core.$strict>>;
1402
+ min: z.ZodOptional<z.ZodNumber>;
1403
+ max: z.ZodOptional<z.ZodNumber>;
1404
+ }, z.core.$strict>], "type">;
1405
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
1406
+ }, z.core.$strict>>;
1407
+ step: z.ZodOptional<z.ZodObject<{
1408
+ index: z.ZodNumber;
1409
+ total: z.ZodNumber;
1410
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
1411
+ canCancel: z.ZodBoolean;
1412
+ }, z.core.$strict>>;
1413
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
1414
+ status: z.ZodLiteral<"available">;
1415
+ }, z.core.$strict>, z.ZodObject<{
1416
+ status: z.ZodLiteral<"notYourTurn">;
1417
+ reason: z.ZodString;
1418
+ }, z.core.$strict>, z.ZodObject<{
1419
+ status: z.ZodLiteral<"blocked">;
1420
+ reason: z.ZodString;
1421
+ code: z.ZodOptional<z.ZodString>;
1422
+ }, z.core.$strict>], "status">;
1423
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
1424
+ ruleId: z.ZodString;
1425
+ errorCode: z.ZodString;
1426
+ }, z.core.$strict>>>;
1427
+ kind: z.ZodLiteral<"action">;
1428
+ }, z.core.$strict>>>;
1429
+ seats: z.ZodRecord<z.ZodString, z.ZodObject<{
1430
+ view: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1431
+ boards: z.ZodOptional<z.ZodNever>;
1432
+ }, z.core.$catchall<z.ZodJSONSchema>>>>;
1433
+ availableInteractionRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
1434
+ zones: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1435
+ cardIds: z.ZodArray<z.ZodString>;
1436
+ cardViewsById: z.ZodRecord<z.ZodString, z.ZodString>;
1437
+ playableByCardId: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
1438
+ }, z.core.$strict>>>;
1439
+ }, z.core.$strict>>;
1440
+ timing: z.ZodOptional<z.ZodObject<{
1441
+ resolveAvailableInteractionsMs: z.ZodNumber;
1442
+ resolveViewMs: z.ZodNumber;
1443
+ resolveZoneHandlesMs: z.ZodNumber;
1444
+ descriptorHashMs: z.ZodNumber;
1445
+ }, z.core.$strict>>;
1446
+ }, z.core.$strict>;
1447
+ declare const PluginPlayerSummarySchema: z.ZodObject<{
1448
+ playerId: z.ZodString;
1449
+ displayName: z.ZodString;
1450
+ color: z.ZodOptional<z.ZodString>;
1451
+ }, z.core.$strict>;
1452
+ declare const PluginSessionDescriptorSchema: z.ZodObject<{
1453
+ sessionId: z.ZodString;
1454
+ players: z.ZodArray<z.ZodObject<{
1455
+ playerId: z.ZodString;
1456
+ displayName: z.ZodString;
1457
+ color: z.ZodOptional<z.ZodString>;
1458
+ }, z.core.$strict>>;
1459
+ }, z.core.$strict>;
1460
+
1461
+ declare const ZoneHandlesSnapshotSchema: z.ZodObject<{
1462
+ cardIds: z.ZodArray<z.ZodString>;
1463
+ cardViewsById: z.ZodRecord<z.ZodString, z.ZodString>;
1464
+ playableByCardId: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
1465
+ phaseName: z.ZodString;
1466
+ interactionKey: z.ZodString;
1467
+ interactionId: z.ZodString;
1468
+ label: z.ZodString;
1469
+ help: z.ZodOptional<z.ZodString>;
1470
+ zoneId: z.ZodOptional<z.ZodString>;
1471
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1472
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
1473
+ mode: z.ZodLiteral<"manual">;
1474
+ }, z.core.$strict>, z.ZodObject<{
1475
+ mode: z.ZodLiteral<"autoWhenReady">;
1476
+ }, z.core.$strict>], "mode">;
1477
+ descriptorDigest: z.ZodOptional<z.ZodString>;
1478
+ actorSeat: z.ZodOptional<z.ZodNumber>;
1479
+ draftDigest: z.ZodOptional<z.ZodString>;
1480
+ inputs: z.ZodArray<z.ZodObject<{
1481
+ key: z.ZodString;
1482
+ kind: z.ZodEnum<{
1483
+ card: "card";
1484
+ form: "form";
1485
+ "board-vertex": "board-vertex";
1486
+ "board-edge": "board-edge";
1487
+ "board-tile": "board-tile";
1488
+ "board-space": "board-space";
1489
+ rng: "rng";
1490
+ }>;
1491
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
1492
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1493
+ mode: z.ZodLiteral<"single">;
1494
+ }, z.core.$strict>, z.ZodObject<{
1495
+ mode: z.ZodLiteral<"many">;
1496
+ min: z.ZodNumber;
1497
+ max: z.ZodOptional<z.ZodNumber>;
1498
+ distinct: z.ZodOptional<z.ZodBoolean>;
1499
+ }, z.core.$strict>], "mode">>;
1500
+ type: z.ZodLiteral<"cardTarget">;
1501
+ projection: z.ZodLiteral<"resolved">;
1502
+ targetKind: z.ZodLiteral<"card">;
1503
+ zoneIds: z.ZodArray<z.ZodString>;
1504
+ eligibleTargets: z.ZodArray<z.ZodString>;
1505
+ }, z.core.$strict>, z.ZodObject<{
1506
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1507
+ mode: z.ZodLiteral<"single">;
1508
+ }, z.core.$strict>, z.ZodObject<{
1509
+ mode: z.ZodLiteral<"many">;
1510
+ min: z.ZodNumber;
1511
+ max: z.ZodOptional<z.ZodNumber>;
1512
+ distinct: z.ZodOptional<z.ZodBoolean>;
1513
+ }, z.core.$strict>], "mode">>;
1514
+ type: z.ZodLiteral<"boardTarget">;
1515
+ projection: z.ZodLiteral<"resolved">;
1516
+ targetKind: z.ZodEnum<{
1517
+ edge: "edge";
1518
+ vertex: "vertex";
1519
+ space: "space";
1520
+ tile: "tile";
1521
+ }>;
1522
+ boardId: z.ZodString;
1523
+ valueKind: z.ZodOptional<z.ZodEnum<{
1524
+ "board-id": "board-id";
1525
+ "player-board-space": "player-board-space";
1526
+ }>>;
1527
+ eligibleTargets: z.ZodArray<z.ZodString>;
1528
+ }, z.core.$strict>, z.ZodObject<{
1529
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1530
+ mode: z.ZodLiteral<"single">;
1531
+ }, z.core.$strict>, z.ZodObject<{
1532
+ mode: z.ZodLiteral<"many">;
1533
+ min: z.ZodNumber;
1534
+ max: z.ZodOptional<z.ZodNumber>;
1535
+ distinct: z.ZodOptional<z.ZodBoolean>;
1536
+ }, z.core.$strict>], "mode">>;
1537
+ type: z.ZodLiteral<"resourceMap">;
1538
+ resources: z.ZodArray<z.ZodObject<{
1539
+ resourceId: z.ZodString;
1540
+ label: z.ZodOptional<z.ZodString>;
1541
+ icon: z.ZodOptional<z.ZodString>;
1542
+ min: z.ZodNumber;
1543
+ max: z.ZodNumber;
1544
+ }, z.core.$strict>>;
1545
+ }, z.core.$strict>, z.ZodObject<{
1546
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1547
+ mode: z.ZodLiteral<"single">;
1548
+ }, z.core.$strict>, z.ZodObject<{
1549
+ mode: z.ZodLiteral<"many">;
1550
+ min: z.ZodNumber;
1551
+ max: z.ZodOptional<z.ZodNumber>;
1552
+ distinct: z.ZodOptional<z.ZodBoolean>;
1553
+ }, z.core.$strict>], "mode">>;
1554
+ type: z.ZodLiteral<"boundedNumber">;
1555
+ min: z.ZodNumber;
1556
+ max: z.ZodNumber;
1557
+ step: z.ZodOptional<z.ZodNumber>;
1558
+ }, z.core.$strict>, z.ZodObject<{
1559
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1560
+ mode: z.ZodLiteral<"single">;
1561
+ }, z.core.$strict>, z.ZodObject<{
1562
+ mode: z.ZodLiteral<"many">;
1563
+ min: z.ZodNumber;
1564
+ max: z.ZodOptional<z.ZodNumber>;
1565
+ distinct: z.ZodOptional<z.ZodBoolean>;
1566
+ }, z.core.$strict>], "mode">>;
1567
+ type: z.ZodLiteral<"choice">;
1568
+ choices: z.ZodArray<z.ZodObject<{
1569
+ value: z.ZodNullable<z.ZodString>;
1570
+ label: z.ZodString;
1571
+ icon: z.ZodOptional<z.ZodString>;
1572
+ badge: z.ZodOptional<z.ZodString>;
1573
+ description: z.ZodOptional<z.ZodString>;
1574
+ disabled: z.ZodOptional<z.ZodBoolean>;
1575
+ disabledReason: z.ZodOptional<z.ZodString>;
1576
+ }, z.core.$strict>>;
1577
+ }, z.core.$strict>, z.ZodObject<{
1578
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1579
+ mode: z.ZodLiteral<"single">;
1580
+ }, z.core.$strict>, z.ZodObject<{
1581
+ mode: z.ZodLiteral<"many">;
1582
+ min: z.ZodNumber;
1583
+ max: z.ZodOptional<z.ZodNumber>;
1584
+ distinct: z.ZodOptional<z.ZodBoolean>;
1585
+ }, z.core.$strict>], "mode">>;
1586
+ type: z.ZodLiteral<"choiceList">;
1587
+ choices: z.ZodArray<z.ZodObject<{
1588
+ label: z.ZodString;
1589
+ icon: z.ZodOptional<z.ZodString>;
1590
+ badge: z.ZodOptional<z.ZodString>;
1591
+ description: z.ZodOptional<z.ZodString>;
1592
+ disabled: z.ZodOptional<z.ZodBoolean>;
1593
+ disabledReason: z.ZodOptional<z.ZodString>;
1594
+ value: z.ZodString;
1595
+ }, z.core.$strict>>;
1596
+ min: z.ZodOptional<z.ZodNumber>;
1597
+ max: z.ZodOptional<z.ZodNumber>;
1598
+ }, z.core.$strict>], "type">;
1599
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
1600
+ }, z.core.$strict>>;
1601
+ step: z.ZodOptional<z.ZodObject<{
1602
+ index: z.ZodNumber;
1603
+ total: z.ZodNumber;
1604
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
1605
+ canCancel: z.ZodBoolean;
1606
+ }, z.core.$strict>>;
1607
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
1608
+ status: z.ZodLiteral<"available">;
1609
+ }, z.core.$strict>, z.ZodObject<{
1610
+ status: z.ZodLiteral<"notYourTurn">;
1611
+ reason: z.ZodString;
1612
+ }, z.core.$strict>, z.ZodObject<{
1613
+ status: z.ZodLiteral<"blocked">;
1614
+ reason: z.ZodString;
1615
+ code: z.ZodOptional<z.ZodString>;
1616
+ }, z.core.$strict>], "status">;
1617
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
1618
+ ruleId: z.ZodString;
1619
+ errorCode: z.ZodString;
1620
+ }, z.core.$strict>>>;
1621
+ kind: z.ZodLiteral<"action">;
1622
+ }, z.core.$strict>>>;
1623
+ }, z.core.$strict>;
1624
+ declare const SimultaneousPhaseSnapshotSchema: z.ZodObject<{
1625
+ phaseName: z.ZodString;
1626
+ interactionId: z.ZodString;
1627
+ actorIds: z.ZodArray<z.ZodString>;
1628
+ sealedPlayerIds: z.ZodArray<z.ZodString>;
1629
+ pendingPlayerIds: z.ZodArray<z.ZodString>;
1630
+ }, z.core.$strict>;
1631
+ declare const GameplayBasisSchema: z.ZodObject<{
1632
+ version: z.ZodNumber;
1633
+ actionSetVersion: z.ZodString;
1634
+ perspectivePlayerId: z.ZodString;
1635
+ }, z.core.$strict>;
1636
+ declare const GameOutcomeSchema: z.ZodObject<{
1637
+ reason: z.ZodObject<{
1638
+ code: z.ZodString;
1639
+ message: z.ZodOptional<z.ZodString>;
1640
+ }, z.core.$strict>;
1641
+ standings: z.ZodArray<z.ZodObject<{
1642
+ playerId: z.ZodString;
1643
+ rank: z.ZodNumber;
1644
+ result: z.ZodEnum<{
1645
+ win: "win";
1646
+ draw: "draw";
1647
+ loss: "loss";
1648
+ eliminated: "eliminated";
1649
+ }>;
1650
+ score: z.ZodOptional<z.ZodNumber>;
1651
+ scoreBreakdown: z.ZodOptional<z.ZodArray<z.ZodObject<{
1652
+ id: z.ZodString;
1653
+ label: z.ZodString;
1654
+ value: z.ZodNumber;
1655
+ }, z.core.$strict>>>;
1656
+ tieBreaks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1657
+ id: z.ZodString;
1658
+ label: z.ZodString;
1659
+ value: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
1660
+ }, z.core.$strict>>>;
1661
+ }, z.core.$strict>>;
1662
+ }, z.core.$strict>;
1663
+ declare const SeatFrameSchema: z.ZodObject<{
1664
+ events: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1665
+ kind: z.ZodLiteral<"systemAction">;
1666
+ procedureId: z.ZodString;
1667
+ title: z.ZodString;
1668
+ summary: z.ZodOptional<z.ZodString>;
1669
+ details: z.ZodOptional<z.ZodArray<z.ZodObject<{
1670
+ label: z.ZodString;
1671
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
1672
+ }, z.core.$strict>>>;
1673
+ }, z.core.$strict>], "kind">>;
1674
+ view: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
1675
+ flow: z.ZodObject<{
1676
+ currentPhase: z.ZodNullable<z.ZodString>;
1677
+ activePlayers: z.ZodArray<z.ZodString>;
1678
+ simultaneousPhase: z.ZodNullable<z.ZodObject<{
1679
+ phaseName: z.ZodString;
1680
+ interactionId: z.ZodString;
1681
+ actorIds: z.ZodArray<z.ZodString>;
1682
+ sealedPlayerIds: z.ZodArray<z.ZodString>;
1683
+ pendingPlayerIds: z.ZodArray<z.ZodString>;
1684
+ }, z.core.$strict>>;
1685
+ }, z.core.$strict>;
1686
+ availableInteractions: z.ZodArray<z.ZodObject<{
1687
+ phaseName: z.ZodString;
1688
+ interactionKey: z.ZodString;
1689
+ interactionId: z.ZodString;
1690
+ label: z.ZodString;
1691
+ help: z.ZodOptional<z.ZodString>;
1692
+ zoneId: z.ZodOptional<z.ZodString>;
1693
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1694
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
1695
+ mode: z.ZodLiteral<"manual">;
1696
+ }, z.core.$strict>, z.ZodObject<{
1697
+ mode: z.ZodLiteral<"autoWhenReady">;
1698
+ }, z.core.$strict>], "mode">;
1699
+ descriptorDigest: z.ZodOptional<z.ZodString>;
1700
+ actorSeat: z.ZodOptional<z.ZodNumber>;
1701
+ draftDigest: z.ZodOptional<z.ZodString>;
1702
+ inputs: z.ZodArray<z.ZodObject<{
1703
+ key: z.ZodString;
1704
+ kind: z.ZodEnum<{
1705
+ card: "card";
1706
+ form: "form";
1707
+ "board-vertex": "board-vertex";
1708
+ "board-edge": "board-edge";
1709
+ "board-tile": "board-tile";
1710
+ "board-space": "board-space";
1711
+ rng: "rng";
1712
+ }>;
1713
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
1714
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1715
+ mode: z.ZodLiteral<"single">;
1716
+ }, z.core.$strict>, z.ZodObject<{
1717
+ mode: z.ZodLiteral<"many">;
1718
+ min: z.ZodNumber;
1719
+ max: z.ZodOptional<z.ZodNumber>;
1720
+ distinct: z.ZodOptional<z.ZodBoolean>;
1721
+ }, z.core.$strict>], "mode">>;
1722
+ type: z.ZodLiteral<"cardTarget">;
1723
+ projection: z.ZodLiteral<"resolved">;
1724
+ targetKind: z.ZodLiteral<"card">;
1725
+ zoneIds: z.ZodArray<z.ZodString>;
1726
+ eligibleTargets: z.ZodArray<z.ZodString>;
1727
+ }, z.core.$strict>, z.ZodObject<{
1728
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1729
+ mode: z.ZodLiteral<"single">;
1730
+ }, z.core.$strict>, z.ZodObject<{
1731
+ mode: z.ZodLiteral<"many">;
1732
+ min: z.ZodNumber;
1733
+ max: z.ZodOptional<z.ZodNumber>;
1734
+ distinct: z.ZodOptional<z.ZodBoolean>;
1735
+ }, z.core.$strict>], "mode">>;
1736
+ type: z.ZodLiteral<"boardTarget">;
1737
+ projection: z.ZodLiteral<"resolved">;
1738
+ targetKind: z.ZodEnum<{
1739
+ edge: "edge";
1740
+ vertex: "vertex";
1741
+ space: "space";
1742
+ tile: "tile";
1743
+ }>;
1744
+ boardId: z.ZodString;
1745
+ valueKind: z.ZodOptional<z.ZodEnum<{
1746
+ "board-id": "board-id";
1747
+ "player-board-space": "player-board-space";
1748
+ }>>;
1749
+ eligibleTargets: z.ZodArray<z.ZodString>;
1750
+ }, z.core.$strict>, z.ZodObject<{
1751
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1752
+ mode: z.ZodLiteral<"single">;
1753
+ }, z.core.$strict>, z.ZodObject<{
1754
+ mode: z.ZodLiteral<"many">;
1755
+ min: z.ZodNumber;
1756
+ max: z.ZodOptional<z.ZodNumber>;
1757
+ distinct: z.ZodOptional<z.ZodBoolean>;
1758
+ }, z.core.$strict>], "mode">>;
1759
+ type: z.ZodLiteral<"resourceMap">;
1760
+ resources: z.ZodArray<z.ZodObject<{
1761
+ resourceId: z.ZodString;
1762
+ label: z.ZodOptional<z.ZodString>;
1763
+ icon: z.ZodOptional<z.ZodString>;
1764
+ min: z.ZodNumber;
1765
+ max: z.ZodNumber;
1766
+ }, z.core.$strict>>;
1767
+ }, z.core.$strict>, z.ZodObject<{
1768
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1769
+ mode: z.ZodLiteral<"single">;
1770
+ }, z.core.$strict>, z.ZodObject<{
1771
+ mode: z.ZodLiteral<"many">;
1772
+ min: z.ZodNumber;
1773
+ max: z.ZodOptional<z.ZodNumber>;
1774
+ distinct: z.ZodOptional<z.ZodBoolean>;
1775
+ }, z.core.$strict>], "mode">>;
1776
+ type: z.ZodLiteral<"boundedNumber">;
1777
+ min: z.ZodNumber;
1778
+ max: z.ZodNumber;
1779
+ step: z.ZodOptional<z.ZodNumber>;
1780
+ }, z.core.$strict>, z.ZodObject<{
1781
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1782
+ mode: z.ZodLiteral<"single">;
1783
+ }, z.core.$strict>, z.ZodObject<{
1784
+ mode: z.ZodLiteral<"many">;
1785
+ min: z.ZodNumber;
1786
+ max: z.ZodOptional<z.ZodNumber>;
1787
+ distinct: z.ZodOptional<z.ZodBoolean>;
1788
+ }, z.core.$strict>], "mode">>;
1789
+ type: z.ZodLiteral<"choice">;
1790
+ choices: z.ZodArray<z.ZodObject<{
1791
+ value: z.ZodNullable<z.ZodString>;
1792
+ label: z.ZodString;
1793
+ icon: z.ZodOptional<z.ZodString>;
1794
+ badge: z.ZodOptional<z.ZodString>;
1795
+ description: z.ZodOptional<z.ZodString>;
1796
+ disabled: z.ZodOptional<z.ZodBoolean>;
1797
+ disabledReason: z.ZodOptional<z.ZodString>;
1798
+ }, z.core.$strict>>;
1799
+ }, z.core.$strict>, z.ZodObject<{
1800
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1801
+ mode: z.ZodLiteral<"single">;
1802
+ }, z.core.$strict>, z.ZodObject<{
1803
+ mode: z.ZodLiteral<"many">;
1804
+ min: z.ZodNumber;
1805
+ max: z.ZodOptional<z.ZodNumber>;
1806
+ distinct: z.ZodOptional<z.ZodBoolean>;
1807
+ }, z.core.$strict>], "mode">>;
1808
+ type: z.ZodLiteral<"choiceList">;
1809
+ choices: z.ZodArray<z.ZodObject<{
1810
+ label: z.ZodString;
1811
+ icon: z.ZodOptional<z.ZodString>;
1812
+ badge: z.ZodOptional<z.ZodString>;
1813
+ description: z.ZodOptional<z.ZodString>;
1814
+ disabled: z.ZodOptional<z.ZodBoolean>;
1815
+ disabledReason: z.ZodOptional<z.ZodString>;
1816
+ value: z.ZodString;
1817
+ }, z.core.$strict>>;
1818
+ min: z.ZodOptional<z.ZodNumber>;
1819
+ max: z.ZodOptional<z.ZodNumber>;
1820
+ }, z.core.$strict>], "type">;
1821
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
1822
+ }, z.core.$strict>>;
1823
+ step: z.ZodOptional<z.ZodObject<{
1824
+ index: z.ZodNumber;
1825
+ total: z.ZodNumber;
1826
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
1827
+ canCancel: z.ZodBoolean;
1828
+ }, z.core.$strict>>;
1829
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
1830
+ status: z.ZodLiteral<"available">;
1831
+ }, z.core.$strict>, z.ZodObject<{
1832
+ status: z.ZodLiteral<"notYourTurn">;
1833
+ reason: z.ZodString;
1834
+ }, z.core.$strict>, z.ZodObject<{
1835
+ status: z.ZodLiteral<"blocked">;
1836
+ reason: z.ZodString;
1837
+ code: z.ZodOptional<z.ZodString>;
1838
+ }, z.core.$strict>], "status">;
1839
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
1840
+ ruleId: z.ZodString;
1841
+ errorCode: z.ZodString;
1842
+ }, z.core.$strict>>>;
1843
+ kind: z.ZodLiteral<"action">;
1844
+ }, z.core.$strict>>;
1845
+ zones: z.ZodRecord<z.ZodString, z.ZodObject<{
1846
+ cardIds: z.ZodArray<z.ZodString>;
1847
+ cardViewsById: z.ZodRecord<z.ZodString, z.ZodString>;
1848
+ playableByCardId: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
1849
+ phaseName: z.ZodString;
1850
+ interactionKey: z.ZodString;
1851
+ interactionId: z.ZodString;
1852
+ label: z.ZodString;
1853
+ help: z.ZodOptional<z.ZodString>;
1854
+ zoneId: z.ZodOptional<z.ZodString>;
1855
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1856
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
1857
+ mode: z.ZodLiteral<"manual">;
1858
+ }, z.core.$strict>, z.ZodObject<{
1859
+ mode: z.ZodLiteral<"autoWhenReady">;
1860
+ }, z.core.$strict>], "mode">;
1861
+ descriptorDigest: z.ZodOptional<z.ZodString>;
1862
+ actorSeat: z.ZodOptional<z.ZodNumber>;
1863
+ draftDigest: z.ZodOptional<z.ZodString>;
1864
+ inputs: z.ZodArray<z.ZodObject<{
1865
+ key: z.ZodString;
1866
+ kind: z.ZodEnum<{
1867
+ card: "card";
1868
+ form: "form";
1869
+ "board-vertex": "board-vertex";
1870
+ "board-edge": "board-edge";
1871
+ "board-tile": "board-tile";
1872
+ "board-space": "board-space";
1873
+ rng: "rng";
1874
+ }>;
1875
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
1876
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1877
+ mode: z.ZodLiteral<"single">;
1878
+ }, z.core.$strict>, z.ZodObject<{
1879
+ mode: z.ZodLiteral<"many">;
1880
+ min: z.ZodNumber;
1881
+ max: z.ZodOptional<z.ZodNumber>;
1882
+ distinct: z.ZodOptional<z.ZodBoolean>;
1883
+ }, z.core.$strict>], "mode">>;
1884
+ type: z.ZodLiteral<"cardTarget">;
1885
+ projection: z.ZodLiteral<"resolved">;
1886
+ targetKind: z.ZodLiteral<"card">;
1887
+ zoneIds: z.ZodArray<z.ZodString>;
1888
+ eligibleTargets: z.ZodArray<z.ZodString>;
1889
+ }, z.core.$strict>, z.ZodObject<{
1890
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1891
+ mode: z.ZodLiteral<"single">;
1892
+ }, z.core.$strict>, z.ZodObject<{
1893
+ mode: z.ZodLiteral<"many">;
1894
+ min: z.ZodNumber;
1895
+ max: z.ZodOptional<z.ZodNumber>;
1896
+ distinct: z.ZodOptional<z.ZodBoolean>;
1897
+ }, z.core.$strict>], "mode">>;
1898
+ type: z.ZodLiteral<"boardTarget">;
1899
+ projection: z.ZodLiteral<"resolved">;
1900
+ targetKind: z.ZodEnum<{
1901
+ edge: "edge";
1902
+ vertex: "vertex";
1903
+ space: "space";
1904
+ tile: "tile";
1905
+ }>;
1906
+ boardId: z.ZodString;
1907
+ valueKind: z.ZodOptional<z.ZodEnum<{
1908
+ "board-id": "board-id";
1909
+ "player-board-space": "player-board-space";
1910
+ }>>;
1911
+ eligibleTargets: z.ZodArray<z.ZodString>;
1912
+ }, z.core.$strict>, z.ZodObject<{
1913
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1914
+ mode: z.ZodLiteral<"single">;
1915
+ }, z.core.$strict>, z.ZodObject<{
1916
+ mode: z.ZodLiteral<"many">;
1917
+ min: z.ZodNumber;
1918
+ max: z.ZodOptional<z.ZodNumber>;
1919
+ distinct: z.ZodOptional<z.ZodBoolean>;
1920
+ }, z.core.$strict>], "mode">>;
1921
+ type: z.ZodLiteral<"resourceMap">;
1922
+ resources: z.ZodArray<z.ZodObject<{
1923
+ resourceId: z.ZodString;
1924
+ label: z.ZodOptional<z.ZodString>;
1925
+ icon: z.ZodOptional<z.ZodString>;
1926
+ min: z.ZodNumber;
1927
+ max: z.ZodNumber;
1928
+ }, z.core.$strict>>;
1929
+ }, z.core.$strict>, z.ZodObject<{
1930
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1931
+ mode: z.ZodLiteral<"single">;
1932
+ }, z.core.$strict>, z.ZodObject<{
1933
+ mode: z.ZodLiteral<"many">;
1934
+ min: z.ZodNumber;
1935
+ max: z.ZodOptional<z.ZodNumber>;
1936
+ distinct: z.ZodOptional<z.ZodBoolean>;
1937
+ }, z.core.$strict>], "mode">>;
1938
+ type: z.ZodLiteral<"boundedNumber">;
1939
+ min: z.ZodNumber;
1940
+ max: z.ZodNumber;
1941
+ step: z.ZodOptional<z.ZodNumber>;
1942
+ }, z.core.$strict>, z.ZodObject<{
1943
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1944
+ mode: z.ZodLiteral<"single">;
1945
+ }, z.core.$strict>, z.ZodObject<{
1946
+ mode: z.ZodLiteral<"many">;
1947
+ min: z.ZodNumber;
1948
+ max: z.ZodOptional<z.ZodNumber>;
1949
+ distinct: z.ZodOptional<z.ZodBoolean>;
1950
+ }, z.core.$strict>], "mode">>;
1951
+ type: z.ZodLiteral<"choice">;
1952
+ choices: z.ZodArray<z.ZodObject<{
1953
+ value: z.ZodNullable<z.ZodString>;
1954
+ label: z.ZodString;
1955
+ icon: z.ZodOptional<z.ZodString>;
1956
+ badge: z.ZodOptional<z.ZodString>;
1957
+ description: z.ZodOptional<z.ZodString>;
1958
+ disabled: z.ZodOptional<z.ZodBoolean>;
1959
+ disabledReason: z.ZodOptional<z.ZodString>;
1960
+ }, z.core.$strict>>;
1961
+ }, z.core.$strict>, z.ZodObject<{
1962
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1963
+ mode: z.ZodLiteral<"single">;
1964
+ }, z.core.$strict>, z.ZodObject<{
1965
+ mode: z.ZodLiteral<"many">;
1966
+ min: z.ZodNumber;
1967
+ max: z.ZodOptional<z.ZodNumber>;
1968
+ distinct: z.ZodOptional<z.ZodBoolean>;
1969
+ }, z.core.$strict>], "mode">>;
1970
+ type: z.ZodLiteral<"choiceList">;
1971
+ choices: z.ZodArray<z.ZodObject<{
1972
+ label: z.ZodString;
1973
+ icon: z.ZodOptional<z.ZodString>;
1974
+ badge: z.ZodOptional<z.ZodString>;
1975
+ description: z.ZodOptional<z.ZodString>;
1976
+ disabled: z.ZodOptional<z.ZodBoolean>;
1977
+ disabledReason: z.ZodOptional<z.ZodString>;
1978
+ value: z.ZodString;
1979
+ }, z.core.$strict>>;
1980
+ min: z.ZodOptional<z.ZodNumber>;
1981
+ max: z.ZodOptional<z.ZodNumber>;
1982
+ }, z.core.$strict>], "type">;
1983
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
1984
+ }, z.core.$strict>>;
1985
+ step: z.ZodOptional<z.ZodObject<{
1986
+ index: z.ZodNumber;
1987
+ total: z.ZodNumber;
1988
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
1989
+ canCancel: z.ZodBoolean;
1990
+ }, z.core.$strict>>;
1991
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
1992
+ status: z.ZodLiteral<"available">;
1993
+ }, z.core.$strict>, z.ZodObject<{
1994
+ status: z.ZodLiteral<"notYourTurn">;
1995
+ reason: z.ZodString;
1996
+ }, z.core.$strict>, z.ZodObject<{
1997
+ status: z.ZodLiteral<"blocked">;
1998
+ reason: z.ZodString;
1999
+ code: z.ZodOptional<z.ZodString>;
2000
+ }, z.core.$strict>], "status">;
2001
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
2002
+ ruleId: z.ZodString;
2003
+ errorCode: z.ZodString;
2004
+ }, z.core.$strict>>>;
2005
+ kind: z.ZodLiteral<"action">;
2006
+ }, z.core.$strict>>>;
2007
+ }, z.core.$strict>>;
2008
+ }, z.core.$strict>;
2009
+ declare const PluginGameplayFrameSchema: z.ZodObject<{
2010
+ events: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2011
+ kind: z.ZodLiteral<"systemAction">;
2012
+ procedureId: z.ZodString;
2013
+ title: z.ZodString;
2014
+ summary: z.ZodOptional<z.ZodString>;
2015
+ details: z.ZodOptional<z.ZodArray<z.ZodObject<{
2016
+ label: z.ZodString;
2017
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
2018
+ }, z.core.$strict>>>;
2019
+ }, z.core.$strict>], "kind">>;
2020
+ view: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
2021
+ flow: z.ZodObject<{
2022
+ currentPhase: z.ZodNullable<z.ZodString>;
2023
+ activePlayers: z.ZodArray<z.ZodString>;
2024
+ simultaneousPhase: z.ZodNullable<z.ZodObject<{
2025
+ phaseName: z.ZodString;
2026
+ interactionId: z.ZodString;
2027
+ actorIds: z.ZodArray<z.ZodString>;
2028
+ sealedPlayerIds: z.ZodArray<z.ZodString>;
2029
+ pendingPlayerIds: z.ZodArray<z.ZodString>;
2030
+ }, z.core.$strict>>;
2031
+ }, z.core.$strict>;
2032
+ availableInteractions: z.ZodArray<z.ZodObject<{
2033
+ phaseName: z.ZodString;
2034
+ interactionKey: z.ZodString;
2035
+ interactionId: z.ZodString;
2036
+ label: z.ZodString;
2037
+ help: z.ZodOptional<z.ZodString>;
2038
+ zoneId: z.ZodOptional<z.ZodString>;
2039
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
2040
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
2041
+ mode: z.ZodLiteral<"manual">;
2042
+ }, z.core.$strict>, z.ZodObject<{
2043
+ mode: z.ZodLiteral<"autoWhenReady">;
2044
+ }, z.core.$strict>], "mode">;
2045
+ descriptorDigest: z.ZodOptional<z.ZodString>;
2046
+ actorSeat: z.ZodOptional<z.ZodNumber>;
2047
+ draftDigest: z.ZodOptional<z.ZodString>;
2048
+ inputs: z.ZodArray<z.ZodObject<{
2049
+ key: z.ZodString;
2050
+ kind: z.ZodEnum<{
2051
+ card: "card";
2052
+ form: "form";
2053
+ "board-vertex": "board-vertex";
2054
+ "board-edge": "board-edge";
2055
+ "board-tile": "board-tile";
2056
+ "board-space": "board-space";
2057
+ rng: "rng";
2058
+ }>;
2059
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
2060
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2061
+ mode: z.ZodLiteral<"single">;
2062
+ }, z.core.$strict>, z.ZodObject<{
2063
+ mode: z.ZodLiteral<"many">;
2064
+ min: z.ZodNumber;
2065
+ max: z.ZodOptional<z.ZodNumber>;
2066
+ distinct: z.ZodOptional<z.ZodBoolean>;
2067
+ }, z.core.$strict>], "mode">>;
2068
+ type: z.ZodLiteral<"cardTarget">;
2069
+ projection: z.ZodLiteral<"resolved">;
2070
+ targetKind: z.ZodLiteral<"card">;
2071
+ zoneIds: z.ZodArray<z.ZodString>;
2072
+ eligibleTargets: z.ZodArray<z.ZodString>;
2073
+ }, z.core.$strict>, z.ZodObject<{
2074
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2075
+ mode: z.ZodLiteral<"single">;
2076
+ }, z.core.$strict>, z.ZodObject<{
2077
+ mode: z.ZodLiteral<"many">;
2078
+ min: z.ZodNumber;
2079
+ max: z.ZodOptional<z.ZodNumber>;
2080
+ distinct: z.ZodOptional<z.ZodBoolean>;
2081
+ }, z.core.$strict>], "mode">>;
2082
+ type: z.ZodLiteral<"boardTarget">;
2083
+ projection: z.ZodLiteral<"resolved">;
2084
+ targetKind: z.ZodEnum<{
2085
+ edge: "edge";
2086
+ vertex: "vertex";
2087
+ space: "space";
2088
+ tile: "tile";
2089
+ }>;
2090
+ boardId: z.ZodString;
2091
+ valueKind: z.ZodOptional<z.ZodEnum<{
2092
+ "board-id": "board-id";
2093
+ "player-board-space": "player-board-space";
2094
+ }>>;
2095
+ eligibleTargets: z.ZodArray<z.ZodString>;
2096
+ }, z.core.$strict>, z.ZodObject<{
2097
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2098
+ mode: z.ZodLiteral<"single">;
2099
+ }, z.core.$strict>, z.ZodObject<{
2100
+ mode: z.ZodLiteral<"many">;
2101
+ min: z.ZodNumber;
2102
+ max: z.ZodOptional<z.ZodNumber>;
2103
+ distinct: z.ZodOptional<z.ZodBoolean>;
2104
+ }, z.core.$strict>], "mode">>;
2105
+ type: z.ZodLiteral<"resourceMap">;
2106
+ resources: z.ZodArray<z.ZodObject<{
2107
+ resourceId: z.ZodString;
2108
+ label: z.ZodOptional<z.ZodString>;
2109
+ icon: z.ZodOptional<z.ZodString>;
2110
+ min: z.ZodNumber;
2111
+ max: z.ZodNumber;
2112
+ }, z.core.$strict>>;
2113
+ }, z.core.$strict>, z.ZodObject<{
2114
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2115
+ mode: z.ZodLiteral<"single">;
2116
+ }, z.core.$strict>, z.ZodObject<{
2117
+ mode: z.ZodLiteral<"many">;
2118
+ min: z.ZodNumber;
2119
+ max: z.ZodOptional<z.ZodNumber>;
2120
+ distinct: z.ZodOptional<z.ZodBoolean>;
2121
+ }, z.core.$strict>], "mode">>;
2122
+ type: z.ZodLiteral<"boundedNumber">;
2123
+ min: z.ZodNumber;
2124
+ max: z.ZodNumber;
2125
+ step: z.ZodOptional<z.ZodNumber>;
2126
+ }, z.core.$strict>, z.ZodObject<{
2127
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2128
+ mode: z.ZodLiteral<"single">;
2129
+ }, z.core.$strict>, z.ZodObject<{
2130
+ mode: z.ZodLiteral<"many">;
2131
+ min: z.ZodNumber;
2132
+ max: z.ZodOptional<z.ZodNumber>;
2133
+ distinct: z.ZodOptional<z.ZodBoolean>;
2134
+ }, z.core.$strict>], "mode">>;
2135
+ type: z.ZodLiteral<"choice">;
2136
+ choices: z.ZodArray<z.ZodObject<{
2137
+ value: z.ZodNullable<z.ZodString>;
2138
+ label: z.ZodString;
2139
+ icon: z.ZodOptional<z.ZodString>;
2140
+ badge: z.ZodOptional<z.ZodString>;
2141
+ description: z.ZodOptional<z.ZodString>;
2142
+ disabled: z.ZodOptional<z.ZodBoolean>;
2143
+ disabledReason: z.ZodOptional<z.ZodString>;
2144
+ }, z.core.$strict>>;
2145
+ }, z.core.$strict>, z.ZodObject<{
2146
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2147
+ mode: z.ZodLiteral<"single">;
2148
+ }, z.core.$strict>, z.ZodObject<{
2149
+ mode: z.ZodLiteral<"many">;
2150
+ min: z.ZodNumber;
2151
+ max: z.ZodOptional<z.ZodNumber>;
2152
+ distinct: z.ZodOptional<z.ZodBoolean>;
2153
+ }, z.core.$strict>], "mode">>;
2154
+ type: z.ZodLiteral<"choiceList">;
2155
+ choices: z.ZodArray<z.ZodObject<{
2156
+ label: z.ZodString;
2157
+ icon: z.ZodOptional<z.ZodString>;
2158
+ badge: z.ZodOptional<z.ZodString>;
2159
+ description: z.ZodOptional<z.ZodString>;
2160
+ disabled: z.ZodOptional<z.ZodBoolean>;
2161
+ disabledReason: z.ZodOptional<z.ZodString>;
2162
+ value: z.ZodString;
2163
+ }, z.core.$strict>>;
2164
+ min: z.ZodOptional<z.ZodNumber>;
2165
+ max: z.ZodOptional<z.ZodNumber>;
2166
+ }, z.core.$strict>], "type">;
2167
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
2168
+ }, z.core.$strict>>;
2169
+ step: z.ZodOptional<z.ZodObject<{
2170
+ index: z.ZodNumber;
2171
+ total: z.ZodNumber;
2172
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
2173
+ canCancel: z.ZodBoolean;
2174
+ }, z.core.$strict>>;
2175
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
2176
+ status: z.ZodLiteral<"available">;
2177
+ }, z.core.$strict>, z.ZodObject<{
2178
+ status: z.ZodLiteral<"notYourTurn">;
2179
+ reason: z.ZodString;
2180
+ }, z.core.$strict>, z.ZodObject<{
2181
+ status: z.ZodLiteral<"blocked">;
2182
+ reason: z.ZodString;
2183
+ code: z.ZodOptional<z.ZodString>;
2184
+ }, z.core.$strict>], "status">;
2185
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
2186
+ ruleId: z.ZodString;
2187
+ errorCode: z.ZodString;
2188
+ }, z.core.$strict>>>;
2189
+ kind: z.ZodLiteral<"action">;
2190
+ }, z.core.$strict>>;
2191
+ zones: z.ZodRecord<z.ZodString, z.ZodObject<{
2192
+ cardIds: z.ZodArray<z.ZodString>;
2193
+ cardViewsById: z.ZodRecord<z.ZodString, z.ZodString>;
2194
+ playableByCardId: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
2195
+ phaseName: z.ZodString;
2196
+ interactionKey: z.ZodString;
2197
+ interactionId: z.ZodString;
2198
+ label: z.ZodString;
2199
+ help: z.ZodOptional<z.ZodString>;
2200
+ zoneId: z.ZodOptional<z.ZodString>;
2201
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
2202
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
2203
+ mode: z.ZodLiteral<"manual">;
2204
+ }, z.core.$strict>, z.ZodObject<{
2205
+ mode: z.ZodLiteral<"autoWhenReady">;
2206
+ }, z.core.$strict>], "mode">;
2207
+ descriptorDigest: z.ZodOptional<z.ZodString>;
2208
+ actorSeat: z.ZodOptional<z.ZodNumber>;
2209
+ draftDigest: z.ZodOptional<z.ZodString>;
2210
+ inputs: z.ZodArray<z.ZodObject<{
2211
+ key: z.ZodString;
2212
+ kind: z.ZodEnum<{
2213
+ card: "card";
2214
+ form: "form";
2215
+ "board-vertex": "board-vertex";
2216
+ "board-edge": "board-edge";
2217
+ "board-tile": "board-tile";
2218
+ "board-space": "board-space";
2219
+ rng: "rng";
2220
+ }>;
2221
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
2222
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2223
+ mode: z.ZodLiteral<"single">;
2224
+ }, z.core.$strict>, z.ZodObject<{
2225
+ mode: z.ZodLiteral<"many">;
2226
+ min: z.ZodNumber;
2227
+ max: z.ZodOptional<z.ZodNumber>;
2228
+ distinct: z.ZodOptional<z.ZodBoolean>;
2229
+ }, z.core.$strict>], "mode">>;
2230
+ type: z.ZodLiteral<"cardTarget">;
2231
+ projection: z.ZodLiteral<"resolved">;
2232
+ targetKind: z.ZodLiteral<"card">;
2233
+ zoneIds: z.ZodArray<z.ZodString>;
2234
+ eligibleTargets: z.ZodArray<z.ZodString>;
2235
+ }, z.core.$strict>, z.ZodObject<{
2236
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2237
+ mode: z.ZodLiteral<"single">;
2238
+ }, z.core.$strict>, z.ZodObject<{
2239
+ mode: z.ZodLiteral<"many">;
2240
+ min: z.ZodNumber;
2241
+ max: z.ZodOptional<z.ZodNumber>;
2242
+ distinct: z.ZodOptional<z.ZodBoolean>;
2243
+ }, z.core.$strict>], "mode">>;
2244
+ type: z.ZodLiteral<"boardTarget">;
2245
+ projection: z.ZodLiteral<"resolved">;
2246
+ targetKind: z.ZodEnum<{
2247
+ edge: "edge";
2248
+ vertex: "vertex";
2249
+ space: "space";
2250
+ tile: "tile";
2251
+ }>;
2252
+ boardId: z.ZodString;
2253
+ valueKind: z.ZodOptional<z.ZodEnum<{
2254
+ "board-id": "board-id";
2255
+ "player-board-space": "player-board-space";
2256
+ }>>;
2257
+ eligibleTargets: z.ZodArray<z.ZodString>;
2258
+ }, z.core.$strict>, z.ZodObject<{
2259
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2260
+ mode: z.ZodLiteral<"single">;
2261
+ }, z.core.$strict>, z.ZodObject<{
2262
+ mode: z.ZodLiteral<"many">;
2263
+ min: z.ZodNumber;
2264
+ max: z.ZodOptional<z.ZodNumber>;
2265
+ distinct: z.ZodOptional<z.ZodBoolean>;
2266
+ }, z.core.$strict>], "mode">>;
2267
+ type: z.ZodLiteral<"resourceMap">;
2268
+ resources: z.ZodArray<z.ZodObject<{
2269
+ resourceId: z.ZodString;
2270
+ label: z.ZodOptional<z.ZodString>;
2271
+ icon: z.ZodOptional<z.ZodString>;
2272
+ min: z.ZodNumber;
2273
+ max: z.ZodNumber;
2274
+ }, z.core.$strict>>;
2275
+ }, z.core.$strict>, z.ZodObject<{
2276
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2277
+ mode: z.ZodLiteral<"single">;
2278
+ }, z.core.$strict>, z.ZodObject<{
2279
+ mode: z.ZodLiteral<"many">;
2280
+ min: z.ZodNumber;
2281
+ max: z.ZodOptional<z.ZodNumber>;
2282
+ distinct: z.ZodOptional<z.ZodBoolean>;
2283
+ }, z.core.$strict>], "mode">>;
2284
+ type: z.ZodLiteral<"boundedNumber">;
2285
+ min: z.ZodNumber;
2286
+ max: z.ZodNumber;
2287
+ step: z.ZodOptional<z.ZodNumber>;
2288
+ }, z.core.$strict>, z.ZodObject<{
2289
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2290
+ mode: z.ZodLiteral<"single">;
2291
+ }, z.core.$strict>, z.ZodObject<{
2292
+ mode: z.ZodLiteral<"many">;
2293
+ min: z.ZodNumber;
2294
+ max: z.ZodOptional<z.ZodNumber>;
2295
+ distinct: z.ZodOptional<z.ZodBoolean>;
2296
+ }, z.core.$strict>], "mode">>;
2297
+ type: z.ZodLiteral<"choice">;
2298
+ choices: z.ZodArray<z.ZodObject<{
2299
+ value: z.ZodNullable<z.ZodString>;
2300
+ label: z.ZodString;
2301
+ icon: z.ZodOptional<z.ZodString>;
2302
+ badge: z.ZodOptional<z.ZodString>;
2303
+ description: z.ZodOptional<z.ZodString>;
2304
+ disabled: z.ZodOptional<z.ZodBoolean>;
2305
+ disabledReason: z.ZodOptional<z.ZodString>;
2306
+ }, z.core.$strict>>;
2307
+ }, z.core.$strict>, z.ZodObject<{
2308
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2309
+ mode: z.ZodLiteral<"single">;
2310
+ }, z.core.$strict>, z.ZodObject<{
2311
+ mode: z.ZodLiteral<"many">;
2312
+ min: z.ZodNumber;
2313
+ max: z.ZodOptional<z.ZodNumber>;
2314
+ distinct: z.ZodOptional<z.ZodBoolean>;
2315
+ }, z.core.$strict>], "mode">>;
2316
+ type: z.ZodLiteral<"choiceList">;
2317
+ choices: z.ZodArray<z.ZodObject<{
2318
+ label: z.ZodString;
2319
+ icon: z.ZodOptional<z.ZodString>;
2320
+ badge: z.ZodOptional<z.ZodString>;
2321
+ description: z.ZodOptional<z.ZodString>;
2322
+ disabled: z.ZodOptional<z.ZodBoolean>;
2323
+ disabledReason: z.ZodOptional<z.ZodString>;
2324
+ value: z.ZodString;
2325
+ }, z.core.$strict>>;
2326
+ min: z.ZodOptional<z.ZodNumber>;
2327
+ max: z.ZodOptional<z.ZodNumber>;
2328
+ }, z.core.$strict>], "type">;
2329
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
2330
+ }, z.core.$strict>>;
2331
+ step: z.ZodOptional<z.ZodObject<{
2332
+ index: z.ZodNumber;
2333
+ total: z.ZodNumber;
2334
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
2335
+ canCancel: z.ZodBoolean;
2336
+ }, z.core.$strict>>;
2337
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
2338
+ status: z.ZodLiteral<"available">;
2339
+ }, z.core.$strict>, z.ZodObject<{
2340
+ status: z.ZodLiteral<"notYourTurn">;
2341
+ reason: z.ZodString;
2342
+ }, z.core.$strict>, z.ZodObject<{
2343
+ status: z.ZodLiteral<"blocked">;
2344
+ reason: z.ZodString;
2345
+ code: z.ZodOptional<z.ZodString>;
2346
+ }, z.core.$strict>], "status">;
2347
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
2348
+ ruleId: z.ZodString;
2349
+ errorCode: z.ZodString;
2350
+ }, z.core.$strict>>>;
2351
+ kind: z.ZodLiteral<"action">;
2352
+ }, z.core.$strict>>>;
2353
+ }, z.core.$strict>>;
2354
+ basis: z.ZodObject<{
2355
+ version: z.ZodNumber;
2356
+ actionSetVersion: z.ZodString;
2357
+ perspectivePlayerId: z.ZodString;
2358
+ }, z.core.$strict>;
2359
+ }, z.core.$strict>;
2360
+ declare const InteractionResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2361
+ type: z.ZodLiteral<"interaction.result">;
2362
+ clientActionId: z.ZodString;
2363
+ accepted: z.ZodLiteral<true>;
2364
+ }, z.core.$strict>, z.ZodObject<{
2365
+ type: z.ZodLiteral<"interaction.result">;
2366
+ clientActionId: z.ZodString;
2367
+ accepted: z.ZodLiteral<false>;
2368
+ errorCode: z.ZodString;
2369
+ message: z.ZodOptional<z.ZodString>;
2370
+ }, z.core.$strict>], "accepted">;
2371
+ declare const SubmitInteractionCommandSchema: z.ZodObject<{
2372
+ type: z.ZodLiteral<"interaction.submit">;
2373
+ clientActionId: z.ZodString;
2374
+ basis: z.ZodObject<{
2375
+ version: z.ZodNumber;
2376
+ actionSetVersion: z.ZodString;
2377
+ perspectivePlayerId: z.ZodString;
2378
+ }, z.core.$strict>;
2379
+ interactionId: z.ZodString;
2380
+ params: z.ZodJSONSchema;
2381
+ }, z.core.$strict>;
2382
+ declare const CancelInteractionCommandSchema: z.ZodObject<{
2383
+ interactionId: z.ZodString;
2384
+ basis: z.ZodObject<{
2385
+ version: z.ZodNumber;
2386
+ actionSetVersion: z.ZodString;
2387
+ perspectivePlayerId: z.ZodString;
2388
+ }, z.core.$strict>;
2389
+ clientActionId: z.ZodString;
2390
+ type: z.ZodLiteral<"interaction.cancel">;
2391
+ }, z.core.$strict>;
2392
+ declare const HostToPluginPayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2393
+ type: z.ZodLiteral<"runtime.init">;
2394
+ session: z.ZodObject<{
2395
+ sessionId: z.ZodString;
2396
+ players: z.ZodArray<z.ZodObject<{
2397
+ playerId: z.ZodString;
2398
+ displayName: z.ZodString;
2399
+ color: z.ZodOptional<z.ZodString>;
2400
+ }, z.core.$strict>>;
2401
+ }, z.core.$strict>;
2402
+ }, z.core.$strict>, z.ZodObject<{
2403
+ type: z.ZodLiteral<"gameplay.frame">;
2404
+ frame: z.ZodObject<{
2405
+ events: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2406
+ kind: z.ZodLiteral<"systemAction">;
2407
+ procedureId: z.ZodString;
2408
+ title: z.ZodString;
2409
+ summary: z.ZodOptional<z.ZodString>;
2410
+ details: z.ZodOptional<z.ZodArray<z.ZodObject<{
2411
+ label: z.ZodString;
2412
+ value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
2413
+ }, z.core.$strict>>>;
2414
+ }, z.core.$strict>], "kind">>;
2415
+ view: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
2416
+ flow: z.ZodObject<{
2417
+ currentPhase: z.ZodNullable<z.ZodString>;
2418
+ activePlayers: z.ZodArray<z.ZodString>;
2419
+ simultaneousPhase: z.ZodNullable<z.ZodObject<{
2420
+ phaseName: z.ZodString;
2421
+ interactionId: z.ZodString;
2422
+ actorIds: z.ZodArray<z.ZodString>;
2423
+ sealedPlayerIds: z.ZodArray<z.ZodString>;
2424
+ pendingPlayerIds: z.ZodArray<z.ZodString>;
2425
+ }, z.core.$strict>>;
2426
+ }, z.core.$strict>;
2427
+ availableInteractions: z.ZodArray<z.ZodObject<{
2428
+ phaseName: z.ZodString;
2429
+ interactionKey: z.ZodString;
2430
+ interactionId: z.ZodString;
2431
+ label: z.ZodString;
2432
+ help: z.ZodOptional<z.ZodString>;
2433
+ zoneId: z.ZodOptional<z.ZodString>;
2434
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
2435
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
2436
+ mode: z.ZodLiteral<"manual">;
2437
+ }, z.core.$strict>, z.ZodObject<{
2438
+ mode: z.ZodLiteral<"autoWhenReady">;
2439
+ }, z.core.$strict>], "mode">;
2440
+ descriptorDigest: z.ZodOptional<z.ZodString>;
2441
+ actorSeat: z.ZodOptional<z.ZodNumber>;
2442
+ draftDigest: z.ZodOptional<z.ZodString>;
2443
+ inputs: z.ZodArray<z.ZodObject<{
2444
+ key: z.ZodString;
2445
+ kind: z.ZodEnum<{
2446
+ card: "card";
2447
+ form: "form";
2448
+ "board-vertex": "board-vertex";
2449
+ "board-edge": "board-edge";
2450
+ "board-tile": "board-tile";
2451
+ "board-space": "board-space";
2452
+ rng: "rng";
2453
+ }>;
2454
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
2455
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2456
+ mode: z.ZodLiteral<"single">;
2457
+ }, z.core.$strict>, z.ZodObject<{
2458
+ mode: z.ZodLiteral<"many">;
2459
+ min: z.ZodNumber;
2460
+ max: z.ZodOptional<z.ZodNumber>;
2461
+ distinct: z.ZodOptional<z.ZodBoolean>;
2462
+ }, z.core.$strict>], "mode">>;
2463
+ type: z.ZodLiteral<"cardTarget">;
2464
+ projection: z.ZodLiteral<"resolved">;
2465
+ targetKind: z.ZodLiteral<"card">;
2466
+ zoneIds: z.ZodArray<z.ZodString>;
2467
+ eligibleTargets: z.ZodArray<z.ZodString>;
2468
+ }, z.core.$strict>, z.ZodObject<{
2469
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2470
+ mode: z.ZodLiteral<"single">;
2471
+ }, z.core.$strict>, z.ZodObject<{
2472
+ mode: z.ZodLiteral<"many">;
2473
+ min: z.ZodNumber;
2474
+ max: z.ZodOptional<z.ZodNumber>;
2475
+ distinct: z.ZodOptional<z.ZodBoolean>;
2476
+ }, z.core.$strict>], "mode">>;
2477
+ type: z.ZodLiteral<"boardTarget">;
2478
+ projection: z.ZodLiteral<"resolved">;
2479
+ targetKind: z.ZodEnum<{
2480
+ edge: "edge";
2481
+ vertex: "vertex";
2482
+ space: "space";
2483
+ tile: "tile";
2484
+ }>;
2485
+ boardId: z.ZodString;
2486
+ valueKind: z.ZodOptional<z.ZodEnum<{
2487
+ "board-id": "board-id";
2488
+ "player-board-space": "player-board-space";
2489
+ }>>;
2490
+ eligibleTargets: z.ZodArray<z.ZodString>;
2491
+ }, z.core.$strict>, z.ZodObject<{
2492
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2493
+ mode: z.ZodLiteral<"single">;
2494
+ }, z.core.$strict>, z.ZodObject<{
2495
+ mode: z.ZodLiteral<"many">;
2496
+ min: z.ZodNumber;
2497
+ max: z.ZodOptional<z.ZodNumber>;
2498
+ distinct: z.ZodOptional<z.ZodBoolean>;
2499
+ }, z.core.$strict>], "mode">>;
2500
+ type: z.ZodLiteral<"resourceMap">;
2501
+ resources: z.ZodArray<z.ZodObject<{
2502
+ resourceId: z.ZodString;
2503
+ label: z.ZodOptional<z.ZodString>;
2504
+ icon: z.ZodOptional<z.ZodString>;
2505
+ min: z.ZodNumber;
2506
+ max: z.ZodNumber;
2507
+ }, z.core.$strict>>;
2508
+ }, z.core.$strict>, z.ZodObject<{
2509
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2510
+ mode: z.ZodLiteral<"single">;
2511
+ }, z.core.$strict>, z.ZodObject<{
2512
+ mode: z.ZodLiteral<"many">;
2513
+ min: z.ZodNumber;
2514
+ max: z.ZodOptional<z.ZodNumber>;
2515
+ distinct: z.ZodOptional<z.ZodBoolean>;
2516
+ }, z.core.$strict>], "mode">>;
2517
+ type: z.ZodLiteral<"boundedNumber">;
2518
+ min: z.ZodNumber;
2519
+ max: z.ZodNumber;
2520
+ step: z.ZodOptional<z.ZodNumber>;
2521
+ }, z.core.$strict>, z.ZodObject<{
2522
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2523
+ mode: z.ZodLiteral<"single">;
2524
+ }, z.core.$strict>, z.ZodObject<{
2525
+ mode: z.ZodLiteral<"many">;
2526
+ min: z.ZodNumber;
2527
+ max: z.ZodOptional<z.ZodNumber>;
2528
+ distinct: z.ZodOptional<z.ZodBoolean>;
2529
+ }, z.core.$strict>], "mode">>;
2530
+ type: z.ZodLiteral<"choice">;
2531
+ choices: z.ZodArray<z.ZodObject<{
2532
+ value: z.ZodNullable<z.ZodString>;
2533
+ label: z.ZodString;
2534
+ icon: z.ZodOptional<z.ZodString>;
2535
+ badge: z.ZodOptional<z.ZodString>;
2536
+ description: z.ZodOptional<z.ZodString>;
2537
+ disabled: z.ZodOptional<z.ZodBoolean>;
2538
+ disabledReason: z.ZodOptional<z.ZodString>;
2539
+ }, z.core.$strict>>;
2540
+ }, z.core.$strict>, z.ZodObject<{
2541
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2542
+ mode: z.ZodLiteral<"single">;
2543
+ }, z.core.$strict>, z.ZodObject<{
2544
+ mode: z.ZodLiteral<"many">;
2545
+ min: z.ZodNumber;
2546
+ max: z.ZodOptional<z.ZodNumber>;
2547
+ distinct: z.ZodOptional<z.ZodBoolean>;
2548
+ }, z.core.$strict>], "mode">>;
2549
+ type: z.ZodLiteral<"choiceList">;
2550
+ choices: z.ZodArray<z.ZodObject<{
2551
+ label: z.ZodString;
2552
+ icon: z.ZodOptional<z.ZodString>;
2553
+ badge: z.ZodOptional<z.ZodString>;
2554
+ description: z.ZodOptional<z.ZodString>;
2555
+ disabled: z.ZodOptional<z.ZodBoolean>;
2556
+ disabledReason: z.ZodOptional<z.ZodString>;
2557
+ value: z.ZodString;
2558
+ }, z.core.$strict>>;
2559
+ min: z.ZodOptional<z.ZodNumber>;
2560
+ max: z.ZodOptional<z.ZodNumber>;
2561
+ }, z.core.$strict>], "type">;
2562
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
2563
+ }, z.core.$strict>>;
2564
+ step: z.ZodOptional<z.ZodObject<{
2565
+ index: z.ZodNumber;
2566
+ total: z.ZodNumber;
2567
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
2568
+ canCancel: z.ZodBoolean;
2569
+ }, z.core.$strict>>;
2570
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
2571
+ status: z.ZodLiteral<"available">;
2572
+ }, z.core.$strict>, z.ZodObject<{
2573
+ status: z.ZodLiteral<"notYourTurn">;
2574
+ reason: z.ZodString;
2575
+ }, z.core.$strict>, z.ZodObject<{
2576
+ status: z.ZodLiteral<"blocked">;
2577
+ reason: z.ZodString;
2578
+ code: z.ZodOptional<z.ZodString>;
2579
+ }, z.core.$strict>], "status">;
2580
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
2581
+ ruleId: z.ZodString;
2582
+ errorCode: z.ZodString;
2583
+ }, z.core.$strict>>>;
2584
+ kind: z.ZodLiteral<"action">;
2585
+ }, z.core.$strict>>;
2586
+ zones: z.ZodRecord<z.ZodString, z.ZodObject<{
2587
+ cardIds: z.ZodArray<z.ZodString>;
2588
+ cardViewsById: z.ZodRecord<z.ZodString, z.ZodString>;
2589
+ playableByCardId: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
2590
+ phaseName: z.ZodString;
2591
+ interactionKey: z.ZodString;
2592
+ interactionId: z.ZodString;
2593
+ label: z.ZodString;
2594
+ help: z.ZodOptional<z.ZodString>;
2595
+ zoneId: z.ZodOptional<z.ZodString>;
2596
+ zoneIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
2597
+ commit: z.ZodDiscriminatedUnion<[z.ZodObject<{
2598
+ mode: z.ZodLiteral<"manual">;
2599
+ }, z.core.$strict>, z.ZodObject<{
2600
+ mode: z.ZodLiteral<"autoWhenReady">;
2601
+ }, z.core.$strict>], "mode">;
2602
+ descriptorDigest: z.ZodOptional<z.ZodString>;
2603
+ actorSeat: z.ZodOptional<z.ZodNumber>;
2604
+ draftDigest: z.ZodOptional<z.ZodString>;
2605
+ inputs: z.ZodArray<z.ZodObject<{
2606
+ key: z.ZodString;
2607
+ kind: z.ZodEnum<{
2608
+ card: "card";
2609
+ form: "form";
2610
+ "board-vertex": "board-vertex";
2611
+ "board-edge": "board-edge";
2612
+ "board-tile": "board-tile";
2613
+ "board-space": "board-space";
2614
+ rng: "rng";
2615
+ }>;
2616
+ domain: z.ZodDiscriminatedUnion<[z.ZodObject<{
2617
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2618
+ mode: z.ZodLiteral<"single">;
2619
+ }, z.core.$strict>, z.ZodObject<{
2620
+ mode: z.ZodLiteral<"many">;
2621
+ min: z.ZodNumber;
2622
+ max: z.ZodOptional<z.ZodNumber>;
2623
+ distinct: z.ZodOptional<z.ZodBoolean>;
2624
+ }, z.core.$strict>], "mode">>;
2625
+ type: z.ZodLiteral<"cardTarget">;
2626
+ projection: z.ZodLiteral<"resolved">;
2627
+ targetKind: z.ZodLiteral<"card">;
2628
+ zoneIds: z.ZodArray<z.ZodString>;
2629
+ eligibleTargets: z.ZodArray<z.ZodString>;
2630
+ }, z.core.$strict>, z.ZodObject<{
2631
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2632
+ mode: z.ZodLiteral<"single">;
2633
+ }, z.core.$strict>, z.ZodObject<{
2634
+ mode: z.ZodLiteral<"many">;
2635
+ min: z.ZodNumber;
2636
+ max: z.ZodOptional<z.ZodNumber>;
2637
+ distinct: z.ZodOptional<z.ZodBoolean>;
2638
+ }, z.core.$strict>], "mode">>;
2639
+ type: z.ZodLiteral<"boardTarget">;
2640
+ projection: z.ZodLiteral<"resolved">;
2641
+ targetKind: z.ZodEnum<{
2642
+ edge: "edge";
2643
+ vertex: "vertex";
2644
+ space: "space";
2645
+ tile: "tile";
2646
+ }>;
2647
+ boardId: z.ZodString;
2648
+ valueKind: z.ZodOptional<z.ZodEnum<{
2649
+ "board-id": "board-id";
2650
+ "player-board-space": "player-board-space";
2651
+ }>>;
2652
+ eligibleTargets: z.ZodArray<z.ZodString>;
2653
+ }, z.core.$strict>, z.ZodObject<{
2654
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2655
+ mode: z.ZodLiteral<"single">;
2656
+ }, z.core.$strict>, z.ZodObject<{
2657
+ mode: z.ZodLiteral<"many">;
2658
+ min: z.ZodNumber;
2659
+ max: z.ZodOptional<z.ZodNumber>;
2660
+ distinct: z.ZodOptional<z.ZodBoolean>;
2661
+ }, z.core.$strict>], "mode">>;
2662
+ type: z.ZodLiteral<"resourceMap">;
2663
+ resources: z.ZodArray<z.ZodObject<{
2664
+ resourceId: z.ZodString;
2665
+ label: z.ZodOptional<z.ZodString>;
2666
+ icon: z.ZodOptional<z.ZodString>;
2667
+ min: z.ZodNumber;
2668
+ max: z.ZodNumber;
2669
+ }, z.core.$strict>>;
2670
+ }, z.core.$strict>, z.ZodObject<{
2671
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2672
+ mode: z.ZodLiteral<"single">;
2673
+ }, z.core.$strict>, z.ZodObject<{
2674
+ mode: z.ZodLiteral<"many">;
2675
+ min: z.ZodNumber;
2676
+ max: z.ZodOptional<z.ZodNumber>;
2677
+ distinct: z.ZodOptional<z.ZodBoolean>;
2678
+ }, z.core.$strict>], "mode">>;
2679
+ type: z.ZodLiteral<"boundedNumber">;
2680
+ min: z.ZodNumber;
2681
+ max: z.ZodNumber;
2682
+ step: z.ZodOptional<z.ZodNumber>;
2683
+ }, z.core.$strict>, z.ZodObject<{
2684
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2685
+ mode: z.ZodLiteral<"single">;
2686
+ }, z.core.$strict>, z.ZodObject<{
2687
+ mode: z.ZodLiteral<"many">;
2688
+ min: z.ZodNumber;
2689
+ max: z.ZodOptional<z.ZodNumber>;
2690
+ distinct: z.ZodOptional<z.ZodBoolean>;
2691
+ }, z.core.$strict>], "mode">>;
2692
+ type: z.ZodLiteral<"choice">;
2693
+ choices: z.ZodArray<z.ZodObject<{
2694
+ value: z.ZodNullable<z.ZodString>;
2695
+ label: z.ZodString;
2696
+ icon: z.ZodOptional<z.ZodString>;
2697
+ badge: z.ZodOptional<z.ZodString>;
2698
+ description: z.ZodOptional<z.ZodString>;
2699
+ disabled: z.ZodOptional<z.ZodBoolean>;
2700
+ disabledReason: z.ZodOptional<z.ZodString>;
2701
+ }, z.core.$strict>>;
2702
+ }, z.core.$strict>, z.ZodObject<{
2703
+ selection: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2704
+ mode: z.ZodLiteral<"single">;
2705
+ }, z.core.$strict>, z.ZodObject<{
2706
+ mode: z.ZodLiteral<"many">;
2707
+ min: z.ZodNumber;
2708
+ max: z.ZodOptional<z.ZodNumber>;
2709
+ distinct: z.ZodOptional<z.ZodBoolean>;
2710
+ }, z.core.$strict>], "mode">>;
2711
+ type: z.ZodLiteral<"choiceList">;
2712
+ choices: z.ZodArray<z.ZodObject<{
2713
+ label: z.ZodString;
2714
+ icon: z.ZodOptional<z.ZodString>;
2715
+ badge: z.ZodOptional<z.ZodString>;
2716
+ description: z.ZodOptional<z.ZodString>;
2717
+ disabled: z.ZodOptional<z.ZodBoolean>;
2718
+ disabledReason: z.ZodOptional<z.ZodString>;
2719
+ value: z.ZodString;
2720
+ }, z.core.$strict>>;
2721
+ min: z.ZodOptional<z.ZodNumber>;
2722
+ max: z.ZodOptional<z.ZodNumber>;
2723
+ }, z.core.$strict>], "type">;
2724
+ defaultValue: z.ZodOptional<z.ZodJSONSchema>;
2725
+ }, z.core.$strict>>;
2726
+ step: z.ZodOptional<z.ZodObject<{
2727
+ index: z.ZodNumber;
2728
+ total: z.ZodNumber;
2729
+ selected: z.ZodRecord<z.ZodString, z.ZodJSONSchema>;
2730
+ canCancel: z.ZodBoolean;
2731
+ }, z.core.$strict>>;
2732
+ availability: z.ZodDiscriminatedUnion<[z.ZodObject<{
2733
+ status: z.ZodLiteral<"available">;
2734
+ }, z.core.$strict>, z.ZodObject<{
2735
+ status: z.ZodLiteral<"notYourTurn">;
2736
+ reason: z.ZodString;
2737
+ }, z.core.$strict>, z.ZodObject<{
2738
+ status: z.ZodLiteral<"blocked">;
2739
+ reason: z.ZodString;
2740
+ code: z.ZodOptional<z.ZodString>;
2741
+ }, z.core.$strict>], "status">;
2742
+ reasons: z.ZodOptional<z.ZodArray<z.ZodObject<{
2743
+ ruleId: z.ZodString;
2744
+ errorCode: z.ZodString;
2745
+ }, z.core.$strict>>>;
2746
+ kind: z.ZodLiteral<"action">;
2747
+ }, z.core.$strict>>>;
2748
+ }, z.core.$strict>>;
2749
+ basis: z.ZodObject<{
2750
+ version: z.ZodNumber;
2751
+ actionSetVersion: z.ZodString;
2752
+ perspectivePlayerId: z.ZodString;
2753
+ }, z.core.$strict>;
2754
+ }, z.core.$strict>;
2755
+ }, z.core.$strict>, z.ZodDiscriminatedUnion<[z.ZodObject<{
2756
+ type: z.ZodLiteral<"interaction.result">;
2757
+ clientActionId: z.ZodString;
2758
+ accepted: z.ZodLiteral<true>;
2759
+ }, z.core.$strict>, z.ZodObject<{
2760
+ type: z.ZodLiteral<"interaction.result">;
2761
+ clientActionId: z.ZodString;
2762
+ accepted: z.ZodLiteral<false>;
2763
+ errorCode: z.ZodString;
2764
+ message: z.ZodOptional<z.ZodString>;
2765
+ }, z.core.$strict>], "accepted">], "type">;
2766
+ declare const PluginToHostPayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2767
+ type: z.ZodLiteral<"runtime.ready">;
2768
+ }, z.core.$strict>, z.ZodObject<{
2769
+ type: z.ZodLiteral<"runtime.resume">;
2770
+ }, z.core.$strict>, z.ZodObject<{
2771
+ type: z.ZodLiteral<"runtime.ack">;
2772
+ sequence: z.ZodNumber;
2773
+ clientReceivedAtMs: z.ZodOptional<z.ZodNumber>;
2774
+ clientRenderedAtMs: z.ZodOptional<z.ZodNumber>;
2775
+ }, z.core.$strict>, z.ZodObject<{
2776
+ type: z.ZodLiteral<"interaction.submit">;
2777
+ clientActionId: z.ZodString;
2778
+ basis: z.ZodObject<{
2779
+ version: z.ZodNumber;
2780
+ actionSetVersion: z.ZodString;
2781
+ perspectivePlayerId: z.ZodString;
2782
+ }, z.core.$strict>;
2783
+ interactionId: z.ZodString;
2784
+ params: z.ZodJSONSchema;
2785
+ }, z.core.$strict>, z.ZodObject<{
2786
+ interactionId: z.ZodString;
2787
+ basis: z.ZodObject<{
2788
+ version: z.ZodNumber;
2789
+ actionSetVersion: z.ZodString;
2790
+ perspectivePlayerId: z.ZodString;
2791
+ }, z.core.$strict>;
2792
+ clientActionId: z.ZodString;
2793
+ type: z.ZodLiteral<"interaction.cancel">;
2794
+ }, z.core.$strict>, z.ZodObject<{
2795
+ type: z.ZodLiteral<"runtime.error">;
2796
+ message: z.ZodString;
2797
+ code: z.ZodOptional<z.ZodString>;
2798
+ }, z.core.$strict>], "type">;
2799
+ declare function createPluginProtocolEnvelopeSchema<Payload>(payloadSchema: z.ZodType<Payload>): z.ZodType<PluginProtocolEnvelope<Payload>>;
2800
+ declare const HostToPluginEnvelopeSchema: z.ZodType<PluginProtocolEnvelope<{
2801
+ type: "interaction.result";
2802
+ clientActionId: string;
2803
+ accepted: true;
2804
+ } | {
2805
+ type: "interaction.result";
2806
+ clientActionId: string;
2807
+ accepted: false;
2808
+ errorCode: string;
2809
+ message?: string | undefined;
2810
+ } | {
2811
+ type: "runtime.init";
2812
+ session: {
2813
+ sessionId: string;
2814
+ players: {
2815
+ playerId: string;
2816
+ displayName: string;
2817
+ color?: string | undefined;
2818
+ }[];
2819
+ };
2820
+ } | {
2821
+ type: "gameplay.frame";
2822
+ frame: {
2823
+ events: {
2824
+ kind: "systemAction";
2825
+ procedureId: string;
2826
+ title: string;
2827
+ summary?: string | undefined;
2828
+ details?: {
2829
+ label: string;
2830
+ value: string | number | boolean;
2831
+ }[] | undefined;
2832
+ }[];
2833
+ view: Record<string, z.core.util.JSONType> | null;
2834
+ flow: {
2835
+ currentPhase: string | null;
2836
+ activePlayers: string[];
2837
+ simultaneousPhase: {
2838
+ phaseName: string;
2839
+ interactionId: string;
2840
+ actorIds: string[];
2841
+ sealedPlayerIds: string[];
2842
+ pendingPlayerIds: string[];
2843
+ } | null;
2844
+ };
2845
+ availableInteractions: {
2846
+ phaseName: string;
2847
+ interactionKey: string;
2848
+ interactionId: string;
2849
+ label: string;
2850
+ commit: {
2851
+ mode: "manual";
2852
+ } | {
2853
+ mode: "autoWhenReady";
2854
+ };
2855
+ inputs: {
2856
+ key: string;
2857
+ kind: "card" | "form" | "board-vertex" | "board-edge" | "board-tile" | "board-space" | "rng";
2858
+ domain: {
2859
+ type: "cardTarget";
2860
+ projection: "resolved";
2861
+ targetKind: "card";
2862
+ zoneIds: string[];
2863
+ eligibleTargets: string[];
2864
+ selection?: {
2865
+ mode: "single";
2866
+ } | {
2867
+ mode: "many";
2868
+ min: number;
2869
+ max?: number | undefined;
2870
+ distinct?: boolean | undefined;
2871
+ } | undefined;
2872
+ } | {
2873
+ type: "boardTarget";
2874
+ projection: "resolved";
2875
+ targetKind: "edge" | "vertex" | "space" | "tile";
2876
+ boardId: string;
2877
+ eligibleTargets: string[];
2878
+ selection?: {
2879
+ mode: "single";
2880
+ } | {
2881
+ mode: "many";
2882
+ min: number;
2883
+ max?: number | undefined;
2884
+ distinct?: boolean | undefined;
2885
+ } | undefined;
2886
+ valueKind?: "board-id" | "player-board-space" | undefined;
2887
+ } | {
2888
+ type: "resourceMap";
2889
+ resources: {
2890
+ resourceId: string;
2891
+ min: number;
2892
+ max: number;
2893
+ label?: string | undefined;
2894
+ icon?: string | undefined;
2895
+ }[];
2896
+ selection?: {
2897
+ mode: "single";
2898
+ } | {
2899
+ mode: "many";
2900
+ min: number;
2901
+ max?: number | undefined;
2902
+ distinct?: boolean | undefined;
2903
+ } | undefined;
2904
+ } | {
2905
+ type: "boundedNumber";
2906
+ min: number;
2907
+ max: number;
2908
+ selection?: {
2909
+ mode: "single";
2910
+ } | {
2911
+ mode: "many";
2912
+ min: number;
2913
+ max?: number | undefined;
2914
+ distinct?: boolean | undefined;
2915
+ } | undefined;
2916
+ step?: number | undefined;
2917
+ } | {
2918
+ type: "choice";
2919
+ choices: {
2920
+ value: string | null;
2921
+ label: string;
2922
+ icon?: string | undefined;
2923
+ badge?: string | undefined;
2924
+ description?: string | undefined;
2925
+ disabled?: boolean | undefined;
2926
+ disabledReason?: string | undefined;
2927
+ }[];
2928
+ selection?: {
2929
+ mode: "single";
2930
+ } | {
2931
+ mode: "many";
2932
+ min: number;
2933
+ max?: number | undefined;
2934
+ distinct?: boolean | undefined;
2935
+ } | undefined;
2936
+ } | {
2937
+ type: "choiceList";
2938
+ choices: {
2939
+ label: string;
2940
+ value: string;
2941
+ icon?: string | undefined;
2942
+ badge?: string | undefined;
2943
+ description?: string | undefined;
2944
+ disabled?: boolean | undefined;
2945
+ disabledReason?: string | undefined;
2946
+ }[];
2947
+ selection?: {
2948
+ mode: "single";
2949
+ } | {
2950
+ mode: "many";
2951
+ min: number;
2952
+ max?: number | undefined;
2953
+ distinct?: boolean | undefined;
2954
+ } | undefined;
2955
+ min?: number | undefined;
2956
+ max?: number | undefined;
2957
+ };
2958
+ defaultValue?: z.core.util.JSONType | undefined;
2959
+ }[];
2960
+ availability: {
2961
+ status: "available";
2962
+ } | {
2963
+ status: "notYourTurn";
2964
+ reason: string;
2965
+ } | {
2966
+ status: "blocked";
2967
+ reason: string;
2968
+ code?: string | undefined;
2969
+ };
2970
+ kind: "action";
2971
+ help?: string | undefined;
2972
+ zoneId?: string | undefined;
2973
+ zoneIds?: string[] | undefined;
2974
+ descriptorDigest?: string | undefined;
2975
+ actorSeat?: number | undefined;
2976
+ draftDigest?: string | undefined;
2977
+ step?: {
2978
+ index: number;
2979
+ total: number;
2980
+ selected: Record<string, z.core.util.JSONType>;
2981
+ canCancel: boolean;
2982
+ } | undefined;
2983
+ reasons?: {
2984
+ ruleId: string;
2985
+ errorCode: string;
2986
+ }[] | undefined;
2987
+ }[];
2988
+ zones: Record<string, {
2989
+ cardIds: string[];
2990
+ cardViewsById: Record<string, string>;
2991
+ playableByCardId: Record<string, {
2992
+ phaseName: string;
2993
+ interactionKey: string;
2994
+ interactionId: string;
2995
+ label: string;
2996
+ commit: {
2997
+ mode: "manual";
2998
+ } | {
2999
+ mode: "autoWhenReady";
3000
+ };
3001
+ inputs: {
3002
+ key: string;
3003
+ kind: "card" | "form" | "board-vertex" | "board-edge" | "board-tile" | "board-space" | "rng";
3004
+ domain: {
3005
+ type: "cardTarget";
3006
+ projection: "resolved";
3007
+ targetKind: "card";
3008
+ zoneIds: string[];
3009
+ eligibleTargets: string[];
3010
+ selection?: {
3011
+ mode: "single";
3012
+ } | {
3013
+ mode: "many";
3014
+ min: number;
3015
+ max?: number | undefined;
3016
+ distinct?: boolean | undefined;
3017
+ } | undefined;
3018
+ } | {
3019
+ type: "boardTarget";
3020
+ projection: "resolved";
3021
+ targetKind: "edge" | "vertex" | "space" | "tile";
3022
+ boardId: string;
3023
+ eligibleTargets: string[];
3024
+ selection?: {
3025
+ mode: "single";
3026
+ } | {
3027
+ mode: "many";
3028
+ min: number;
3029
+ max?: number | undefined;
3030
+ distinct?: boolean | undefined;
3031
+ } | undefined;
3032
+ valueKind?: "board-id" | "player-board-space" | undefined;
3033
+ } | {
3034
+ type: "resourceMap";
3035
+ resources: {
3036
+ resourceId: string;
3037
+ min: number;
3038
+ max: number;
3039
+ label?: string | undefined;
3040
+ icon?: string | undefined;
3041
+ }[];
3042
+ selection?: {
3043
+ mode: "single";
3044
+ } | {
3045
+ mode: "many";
3046
+ min: number;
3047
+ max?: number | undefined;
3048
+ distinct?: boolean | undefined;
3049
+ } | undefined;
3050
+ } | {
3051
+ type: "boundedNumber";
3052
+ min: number;
3053
+ max: number;
3054
+ selection?: {
3055
+ mode: "single";
3056
+ } | {
3057
+ mode: "many";
3058
+ min: number;
3059
+ max?: number | undefined;
3060
+ distinct?: boolean | undefined;
3061
+ } | undefined;
3062
+ step?: number | undefined;
3063
+ } | {
3064
+ type: "choice";
3065
+ choices: {
3066
+ value: string | null;
3067
+ label: string;
3068
+ icon?: string | undefined;
3069
+ badge?: string | undefined;
3070
+ description?: string | undefined;
3071
+ disabled?: boolean | undefined;
3072
+ disabledReason?: string | undefined;
3073
+ }[];
3074
+ selection?: {
3075
+ mode: "single";
3076
+ } | {
3077
+ mode: "many";
3078
+ min: number;
3079
+ max?: number | undefined;
3080
+ distinct?: boolean | undefined;
3081
+ } | undefined;
3082
+ } | {
3083
+ type: "choiceList";
3084
+ choices: {
3085
+ label: string;
3086
+ value: string;
3087
+ icon?: string | undefined;
3088
+ badge?: string | undefined;
3089
+ description?: string | undefined;
3090
+ disabled?: boolean | undefined;
3091
+ disabledReason?: string | undefined;
3092
+ }[];
3093
+ selection?: {
3094
+ mode: "single";
3095
+ } | {
3096
+ mode: "many";
3097
+ min: number;
3098
+ max?: number | undefined;
3099
+ distinct?: boolean | undefined;
3100
+ } | undefined;
3101
+ min?: number | undefined;
3102
+ max?: number | undefined;
3103
+ };
3104
+ defaultValue?: z.core.util.JSONType | undefined;
3105
+ }[];
3106
+ availability: {
3107
+ status: "available";
3108
+ } | {
3109
+ status: "notYourTurn";
3110
+ reason: string;
3111
+ } | {
3112
+ status: "blocked";
3113
+ reason: string;
3114
+ code?: string | undefined;
3115
+ };
3116
+ kind: "action";
3117
+ help?: string | undefined;
3118
+ zoneId?: string | undefined;
3119
+ zoneIds?: string[] | undefined;
3120
+ descriptorDigest?: string | undefined;
3121
+ actorSeat?: number | undefined;
3122
+ draftDigest?: string | undefined;
3123
+ step?: {
3124
+ index: number;
3125
+ total: number;
3126
+ selected: Record<string, z.core.util.JSONType>;
3127
+ canCancel: boolean;
3128
+ } | undefined;
3129
+ reasons?: {
3130
+ ruleId: string;
3131
+ errorCode: string;
3132
+ }[] | undefined;
3133
+ }[]>;
3134
+ }>;
3135
+ basis: {
3136
+ version: number;
3137
+ actionSetVersion: string;
3138
+ perspectivePlayerId: string;
3139
+ };
3140
+ };
3141
+ }>, unknown, z.core.$ZodTypeInternals<PluginProtocolEnvelope<{
3142
+ type: "interaction.result";
3143
+ clientActionId: string;
3144
+ accepted: true;
3145
+ } | {
3146
+ type: "interaction.result";
3147
+ clientActionId: string;
3148
+ accepted: false;
3149
+ errorCode: string;
3150
+ message?: string | undefined;
3151
+ } | {
3152
+ type: "runtime.init";
3153
+ session: {
3154
+ sessionId: string;
3155
+ players: {
3156
+ playerId: string;
3157
+ displayName: string;
3158
+ color?: string | undefined;
3159
+ }[];
3160
+ };
3161
+ } | {
3162
+ type: "gameplay.frame";
3163
+ frame: {
3164
+ events: {
3165
+ kind: "systemAction";
3166
+ procedureId: string;
3167
+ title: string;
3168
+ summary?: string | undefined;
3169
+ details?: {
3170
+ label: string;
3171
+ value: string | number | boolean;
3172
+ }[] | undefined;
3173
+ }[];
3174
+ view: Record<string, z.core.util.JSONType> | null;
3175
+ flow: {
3176
+ currentPhase: string | null;
3177
+ activePlayers: string[];
3178
+ simultaneousPhase: {
3179
+ phaseName: string;
3180
+ interactionId: string;
3181
+ actorIds: string[];
3182
+ sealedPlayerIds: string[];
3183
+ pendingPlayerIds: string[];
3184
+ } | null;
3185
+ };
3186
+ availableInteractions: {
3187
+ phaseName: string;
3188
+ interactionKey: string;
3189
+ interactionId: string;
3190
+ label: string;
3191
+ commit: {
3192
+ mode: "manual";
3193
+ } | {
3194
+ mode: "autoWhenReady";
3195
+ };
3196
+ inputs: {
3197
+ key: string;
3198
+ kind: "card" | "form" | "board-vertex" | "board-edge" | "board-tile" | "board-space" | "rng";
3199
+ domain: {
3200
+ type: "cardTarget";
3201
+ projection: "resolved";
3202
+ targetKind: "card";
3203
+ zoneIds: string[];
3204
+ eligibleTargets: string[];
3205
+ selection?: {
3206
+ mode: "single";
3207
+ } | {
3208
+ mode: "many";
3209
+ min: number;
3210
+ max?: number | undefined;
3211
+ distinct?: boolean | undefined;
3212
+ } | undefined;
3213
+ } | {
3214
+ type: "boardTarget";
3215
+ projection: "resolved";
3216
+ targetKind: "edge" | "vertex" | "space" | "tile";
3217
+ boardId: string;
3218
+ eligibleTargets: string[];
3219
+ selection?: {
3220
+ mode: "single";
3221
+ } | {
3222
+ mode: "many";
3223
+ min: number;
3224
+ max?: number | undefined;
3225
+ distinct?: boolean | undefined;
3226
+ } | undefined;
3227
+ valueKind?: "board-id" | "player-board-space" | undefined;
3228
+ } | {
3229
+ type: "resourceMap";
3230
+ resources: {
3231
+ resourceId: string;
3232
+ min: number;
3233
+ max: number;
3234
+ label?: string | undefined;
3235
+ icon?: string | undefined;
3236
+ }[];
3237
+ selection?: {
3238
+ mode: "single";
3239
+ } | {
3240
+ mode: "many";
3241
+ min: number;
3242
+ max?: number | undefined;
3243
+ distinct?: boolean | undefined;
3244
+ } | undefined;
3245
+ } | {
3246
+ type: "boundedNumber";
3247
+ min: number;
3248
+ max: number;
3249
+ selection?: {
3250
+ mode: "single";
3251
+ } | {
3252
+ mode: "many";
3253
+ min: number;
3254
+ max?: number | undefined;
3255
+ distinct?: boolean | undefined;
3256
+ } | undefined;
3257
+ step?: number | undefined;
3258
+ } | {
3259
+ type: "choice";
3260
+ choices: {
3261
+ value: string | null;
3262
+ label: string;
3263
+ icon?: string | undefined;
3264
+ badge?: string | undefined;
3265
+ description?: string | undefined;
3266
+ disabled?: boolean | undefined;
3267
+ disabledReason?: string | undefined;
3268
+ }[];
3269
+ selection?: {
3270
+ mode: "single";
3271
+ } | {
3272
+ mode: "many";
3273
+ min: number;
3274
+ max?: number | undefined;
3275
+ distinct?: boolean | undefined;
3276
+ } | undefined;
3277
+ } | {
3278
+ type: "choiceList";
3279
+ choices: {
3280
+ label: string;
3281
+ value: string;
3282
+ icon?: string | undefined;
3283
+ badge?: string | undefined;
3284
+ description?: string | undefined;
3285
+ disabled?: boolean | undefined;
3286
+ disabledReason?: string | undefined;
3287
+ }[];
3288
+ selection?: {
3289
+ mode: "single";
3290
+ } | {
3291
+ mode: "many";
3292
+ min: number;
3293
+ max?: number | undefined;
3294
+ distinct?: boolean | undefined;
3295
+ } | undefined;
3296
+ min?: number | undefined;
3297
+ max?: number | undefined;
3298
+ };
3299
+ defaultValue?: z.core.util.JSONType | undefined;
3300
+ }[];
3301
+ availability: {
3302
+ status: "available";
3303
+ } | {
3304
+ status: "notYourTurn";
3305
+ reason: string;
3306
+ } | {
3307
+ status: "blocked";
3308
+ reason: string;
3309
+ code?: string | undefined;
3310
+ };
3311
+ kind: "action";
3312
+ help?: string | undefined;
3313
+ zoneId?: string | undefined;
3314
+ zoneIds?: string[] | undefined;
3315
+ descriptorDigest?: string | undefined;
3316
+ actorSeat?: number | undefined;
3317
+ draftDigest?: string | undefined;
3318
+ step?: {
3319
+ index: number;
3320
+ total: number;
3321
+ selected: Record<string, z.core.util.JSONType>;
3322
+ canCancel: boolean;
3323
+ } | undefined;
3324
+ reasons?: {
3325
+ ruleId: string;
3326
+ errorCode: string;
3327
+ }[] | undefined;
3328
+ }[];
3329
+ zones: Record<string, {
3330
+ cardIds: string[];
3331
+ cardViewsById: Record<string, string>;
3332
+ playableByCardId: Record<string, {
3333
+ phaseName: string;
3334
+ interactionKey: string;
3335
+ interactionId: string;
3336
+ label: string;
3337
+ commit: {
3338
+ mode: "manual";
3339
+ } | {
3340
+ mode: "autoWhenReady";
3341
+ };
3342
+ inputs: {
3343
+ key: string;
3344
+ kind: "card" | "form" | "board-vertex" | "board-edge" | "board-tile" | "board-space" | "rng";
3345
+ domain: {
3346
+ type: "cardTarget";
3347
+ projection: "resolved";
3348
+ targetKind: "card";
3349
+ zoneIds: string[];
3350
+ eligibleTargets: string[];
3351
+ selection?: {
3352
+ mode: "single";
3353
+ } | {
3354
+ mode: "many";
3355
+ min: number;
3356
+ max?: number | undefined;
3357
+ distinct?: boolean | undefined;
3358
+ } | undefined;
3359
+ } | {
3360
+ type: "boardTarget";
3361
+ projection: "resolved";
3362
+ targetKind: "edge" | "vertex" | "space" | "tile";
3363
+ boardId: string;
3364
+ eligibleTargets: string[];
3365
+ selection?: {
3366
+ mode: "single";
3367
+ } | {
3368
+ mode: "many";
3369
+ min: number;
3370
+ max?: number | undefined;
3371
+ distinct?: boolean | undefined;
3372
+ } | undefined;
3373
+ valueKind?: "board-id" | "player-board-space" | undefined;
3374
+ } | {
3375
+ type: "resourceMap";
3376
+ resources: {
3377
+ resourceId: string;
3378
+ min: number;
3379
+ max: number;
3380
+ label?: string | undefined;
3381
+ icon?: string | undefined;
3382
+ }[];
3383
+ selection?: {
3384
+ mode: "single";
3385
+ } | {
3386
+ mode: "many";
3387
+ min: number;
3388
+ max?: number | undefined;
3389
+ distinct?: boolean | undefined;
3390
+ } | undefined;
3391
+ } | {
3392
+ type: "boundedNumber";
3393
+ min: number;
3394
+ max: number;
3395
+ selection?: {
3396
+ mode: "single";
3397
+ } | {
3398
+ mode: "many";
3399
+ min: number;
3400
+ max?: number | undefined;
3401
+ distinct?: boolean | undefined;
3402
+ } | undefined;
3403
+ step?: number | undefined;
3404
+ } | {
3405
+ type: "choice";
3406
+ choices: {
3407
+ value: string | null;
3408
+ label: string;
3409
+ icon?: string | undefined;
3410
+ badge?: string | undefined;
3411
+ description?: string | undefined;
3412
+ disabled?: boolean | undefined;
3413
+ disabledReason?: string | undefined;
3414
+ }[];
3415
+ selection?: {
3416
+ mode: "single";
3417
+ } | {
3418
+ mode: "many";
3419
+ min: number;
3420
+ max?: number | undefined;
3421
+ distinct?: boolean | undefined;
3422
+ } | undefined;
3423
+ } | {
3424
+ type: "choiceList";
3425
+ choices: {
3426
+ label: string;
3427
+ value: string;
3428
+ icon?: string | undefined;
3429
+ badge?: string | undefined;
3430
+ description?: string | undefined;
3431
+ disabled?: boolean | undefined;
3432
+ disabledReason?: string | undefined;
3433
+ }[];
3434
+ selection?: {
3435
+ mode: "single";
3436
+ } | {
3437
+ mode: "many";
3438
+ min: number;
3439
+ max?: number | undefined;
3440
+ distinct?: boolean | undefined;
3441
+ } | undefined;
3442
+ min?: number | undefined;
3443
+ max?: number | undefined;
3444
+ };
3445
+ defaultValue?: z.core.util.JSONType | undefined;
3446
+ }[];
3447
+ availability: {
3448
+ status: "available";
3449
+ } | {
3450
+ status: "notYourTurn";
3451
+ reason: string;
3452
+ } | {
3453
+ status: "blocked";
3454
+ reason: string;
3455
+ code?: string | undefined;
3456
+ };
3457
+ kind: "action";
3458
+ help?: string | undefined;
3459
+ zoneId?: string | undefined;
3460
+ zoneIds?: string[] | undefined;
3461
+ descriptorDigest?: string | undefined;
3462
+ actorSeat?: number | undefined;
3463
+ draftDigest?: string | undefined;
3464
+ step?: {
3465
+ index: number;
3466
+ total: number;
3467
+ selected: Record<string, z.core.util.JSONType>;
3468
+ canCancel: boolean;
3469
+ } | undefined;
3470
+ reasons?: {
3471
+ ruleId: string;
3472
+ errorCode: string;
3473
+ }[] | undefined;
3474
+ }[]>;
3475
+ }>;
3476
+ basis: {
3477
+ version: number;
3478
+ actionSetVersion: string;
3479
+ perspectivePlayerId: string;
3480
+ };
3481
+ };
3482
+ }>, unknown>>;
3483
+ declare const PluginToHostEnvelopeSchema: z.ZodType<PluginProtocolEnvelope<{
3484
+ type: "runtime.ready";
3485
+ } | {
3486
+ type: "runtime.resume";
3487
+ } | {
3488
+ type: "runtime.ack";
3489
+ sequence: number;
3490
+ clientReceivedAtMs?: number | undefined;
3491
+ clientRenderedAtMs?: number | undefined;
3492
+ } | {
3493
+ type: "interaction.submit";
3494
+ clientActionId: string;
3495
+ basis: {
3496
+ version: number;
3497
+ actionSetVersion: string;
3498
+ perspectivePlayerId: string;
3499
+ };
3500
+ interactionId: string;
3501
+ params: z.core.util.JSONType;
3502
+ } | {
3503
+ interactionId: string;
3504
+ basis: {
3505
+ version: number;
3506
+ actionSetVersion: string;
3507
+ perspectivePlayerId: string;
3508
+ };
3509
+ clientActionId: string;
3510
+ type: "interaction.cancel";
3511
+ } | {
3512
+ type: "runtime.error";
3513
+ message: string;
3514
+ code?: string | undefined;
3515
+ }>, unknown, z.core.$ZodTypeInternals<PluginProtocolEnvelope<{
3516
+ type: "runtime.ready";
3517
+ } | {
3518
+ type: "runtime.resume";
3519
+ } | {
3520
+ type: "runtime.ack";
3521
+ sequence: number;
3522
+ clientReceivedAtMs?: number | undefined;
3523
+ clientRenderedAtMs?: number | undefined;
3524
+ } | {
3525
+ type: "interaction.submit";
3526
+ clientActionId: string;
3527
+ basis: {
3528
+ version: number;
3529
+ actionSetVersion: string;
3530
+ perspectivePlayerId: string;
3531
+ };
3532
+ interactionId: string;
3533
+ params: z.core.util.JSONType;
3534
+ } | {
3535
+ interactionId: string;
3536
+ basis: {
3537
+ version: number;
3538
+ actionSetVersion: string;
3539
+ perspectivePlayerId: string;
3540
+ };
3541
+ clientActionId: string;
3542
+ type: "interaction.cancel";
3543
+ } | {
3544
+ type: "runtime.error";
3545
+ message: string;
3546
+ code?: string | undefined;
3547
+ }>, unknown>>;
3548
+ declare function parsePluginSessionDescriptor(value: unknown): PluginSessionDescriptor;
3549
+ declare function parsePluginGameplayFrame(value: unknown): PluginGameplayFrame;
3550
+ declare function parseHostToPluginEnvelope(value: unknown): PluginProtocolEnvelope<HostToPluginPayload>;
3551
+ declare function parsePluginToHostEnvelope(value: unknown): PluginProtocolEnvelope<PluginToHostPayload>;
3552
+
3553
+ export { type ActionSetVersionInput, AmbiguousTargetError, AuthAcceptedFrameSchema, AuthConnectFrameSchema, AuthRefreshFrameSchema, BoardBase, BoardCollection, type BoardLayoutOptions, BoardStaticProjectionSchema, type CancelInteractionCommand, CancelInteractionCommandSchema, Card, CardBase, type ClientGameplayFrame, ClientGameplayFrameSchema, CommandSource, CoreInstance, DREAMBOARD_PLUGIN_PROTOCOL, DREAMBOARD_PLUGIN_PROTOCOL_VERSION, DREAMBOARD_SDK_PACKAGES, DREAMBOARD_SDK_PACKAGE_SET, DREAMBOARD_SDK_VERSION, type DragState, type DreamboardSdkPackageName, type DreamboardSdkPackageSet, type DropTarget, FeatureContext, Features, GameEventDetailSchema, GameEventSchema, GameInstance, GameOutcomeSchema, GameSource, GameplayBackpressureFrameSchema, GameplayBackpressureOperationSchema, GameplayBackpressureReasonSchema, GameplayBasis, GameplayBasisSchema, GameplayCloseCode, type GameplayCredential, GameplayCredentialSchema, type HandOptions, type HostToPluginEnvelope, HostToPluginEnvelopeSchema, type HostToPluginPayload, HostToPluginPayloadSchema, IdOf, InputKey, InstanceOptions, InteractionDescriptor, InteractionKey, type InteractionResult, InteractionResultSchema, type MaterializePluginGameplayFrameInput, type PanZoomOptions, PlayerId, PluginGameplayFrame, PluginGameplayFrameSchema, PluginPlayerSummarySchema, type PluginProtocolEnvelope, PluginSessionDescriptor, PluginSessionDescriptorSchema, type PluginToHostEnvelope, PluginToHostEnvelopeSchema, type PluginToHostPayload, PluginToHostPayloadSchema, ReducerBoardStaticProjection, ReducerSeatProjectionBundle, RuntimeJson, SeatFrameSchema, SeatProjectionBundleSchema, type ServerGameplayFrame, ServerGameplayFrameSchema, SessionResumeFrameSchema, SessionSnapshotFrameSchema, SimultaneousPhaseSnapshotSchema, SourceSnapshot, type SubmitInteractionCommand, SubmitInteractionCommandSchema, SystemActionEventSchema, type ViewportSurface, type ViewportTransform, type WheelInput, Zone, ZoneHandlesSnapshotSchema, boardFeature, canonicalizePluginRuntimeJson, computePluginActionSetVersion, createGameInstance, createPluginProtocolEnvelopeSchema, digestPluginCommandRequest, digestPluginGameplayFrame, digestPluginRuntimeJson, dragFeature, encodeCanonicalPluginRuntimeJson, handFeature, hostSource, iframeSource, materializePluginGameplayFrame, panZoomFeature, parseHostToPluginEnvelope, parsePluginGameplayFrame, parsePluginSessionDescriptor, parsePluginToHostEnvelope, staticSource };