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

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