@horizon36596/zenith-schema 0.1.1

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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +18 -0
  3. package/README.md +24 -0
  4. package/dist/auto.d.ts +1882 -0
  5. package/dist/auto.d.ts.map +1 -0
  6. package/dist/auto.js +236 -0
  7. package/dist/auto.js.map +1 -0
  8. package/dist/common.d.ts +76 -0
  9. package/dist/common.d.ts.map +1 -0
  10. package/dist/common.js +30 -0
  11. package/dist/common.js.map +1 -0
  12. package/dist/expr.d.ts +56 -0
  13. package/dist/expr.d.ts.map +1 -0
  14. package/dist/expr.js +245 -0
  15. package/dist/expr.js.map +1 -0
  16. package/dist/field.d.ts +719 -0
  17. package/dist/field.d.ts.map +1 -0
  18. package/dist/field.js +158 -0
  19. package/dist/field.js.map +1 -0
  20. package/dist/ids.d.ts +62 -0
  21. package/dist/ids.d.ts.map +1 -0
  22. package/dist/ids.js +79 -0
  23. package/dist/ids.js.map +1 -0
  24. package/dist/index.d.ts +17 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +17 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/jsonschema.d.ts +14 -0
  29. package/dist/jsonschema.d.ts.map +1 -0
  30. package/dist/jsonschema.js +31 -0
  31. package/dist/jsonschema.js.map +1 -0
  32. package/dist/link.d.ts +117 -0
  33. package/dist/link.d.ts.map +1 -0
  34. package/dist/link.js +58 -0
  35. package/dist/link.js.map +1 -0
  36. package/dist/migrate.d.ts +2699 -0
  37. package/dist/migrate.d.ts.map +1 -0
  38. package/dist/migrate.js +109 -0
  39. package/dist/migrate.js.map +1 -0
  40. package/dist/parse.d.ts +28 -0
  41. package/dist/parse.d.ts.map +1 -0
  42. package/dist/parse.js +46 -0
  43. package/dist/parse.js.map +1 -0
  44. package/dist/robot.d.ts +2935 -0
  45. package/dist/robot.d.ts.map +1 -0
  46. package/dist/robot.js +231 -0
  47. package/dist/robot.js.map +1 -0
  48. package/dist/waypoints.d.ts +63 -0
  49. package/dist/waypoints.d.ts.map +1 -0
  50. package/dist/waypoints.js +20 -0
  51. package/dist/waypoints.js.map +1 -0
  52. package/json/auto.json +683 -0
  53. package/json/field.json +457 -0
  54. package/json/link.json +110 -0
  55. package/json/robot.json +664 -0
  56. package/json/waypoints.json +50 -0
  57. package/package.json +65 -0
@@ -0,0 +1,719 @@
1
+ import { z } from "zod";
2
+ /** An axis-aligned box the robot may not drive through, with a z range. */
3
+ export declare const obstacleSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ kind: z.ZodLiteral<"box">;
6
+ minXIn: z.ZodNumber;
7
+ maxXIn: z.ZodNumber;
8
+ minYIn: z.ZodNumber;
9
+ maxYIn: z.ZodNumber;
10
+ minZIn: z.ZodNumber;
11
+ maxZIn: z.ZodNumber;
12
+ solidToRobot: z.ZodOptional<z.ZodBoolean>;
13
+ provenance: z.ZodOptional<z.ZodString>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ kind: "box";
16
+ id: string;
17
+ minXIn: number;
18
+ maxXIn: number;
19
+ minYIn: number;
20
+ maxYIn: number;
21
+ minZIn: number;
22
+ maxZIn: number;
23
+ provenance?: string | undefined;
24
+ solidToRobot?: boolean | undefined;
25
+ }, {
26
+ kind: "box";
27
+ id: string;
28
+ minXIn: number;
29
+ maxXIn: number;
30
+ minYIn: number;
31
+ maxYIn: number;
32
+ minZIn: number;
33
+ maxZIn: number;
34
+ provenance?: string | undefined;
35
+ solidToRobot?: boolean | undefined;
36
+ }>;
37
+ /** An axis-aligned rectangle a rule talks about (a loading zone, a parking zone). */
38
+ export declare const zoneSchema: z.ZodObject<{
39
+ id: z.ZodString;
40
+ kind: z.ZodLiteral<"rect">;
41
+ minXIn: z.ZodNumber;
42
+ maxXIn: z.ZodNumber;
43
+ minYIn: z.ZodNumber;
44
+ maxYIn: z.ZodNumber;
45
+ rule: z.ZodOptional<z.ZodString>;
46
+ appliesInAuto: z.ZodOptional<z.ZodBoolean>;
47
+ provenance: z.ZodOptional<z.ZodString>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ kind: "rect";
50
+ id: string;
51
+ minXIn: number;
52
+ maxXIn: number;
53
+ minYIn: number;
54
+ maxYIn: number;
55
+ provenance?: string | undefined;
56
+ rule?: string | undefined;
57
+ appliesInAuto?: boolean | undefined;
58
+ }, {
59
+ kind: "rect";
60
+ id: string;
61
+ minXIn: number;
62
+ maxXIn: number;
63
+ minYIn: number;
64
+ maxYIn: number;
65
+ provenance?: string | undefined;
66
+ rule?: string | undefined;
67
+ appliesInAuto?: boolean | undefined;
68
+ }>;
69
+ /**
70
+ * A game element or container. Seasons differ wildly here, so the known keys are optional and
71
+ * unknown ones survive a round trip: the season plugin reads what it put there.
72
+ */
73
+ export declare const elementSchema: z.ZodObject<{
74
+ id: z.ZodString;
75
+ kind: z.ZodString;
76
+ container: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
77
+ xIn: z.ZodOptional<z.ZodNumber>;
78
+ yIn: z.ZodOptional<z.ZodNumber>;
79
+ radiusIn: z.ZodOptional<z.ZodNumber>;
80
+ holds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
81
+ provenance: z.ZodOptional<z.ZodString>;
82
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
83
+ id: z.ZodString;
84
+ kind: z.ZodString;
85
+ container: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
86
+ xIn: z.ZodOptional<z.ZodNumber>;
87
+ yIn: z.ZodOptional<z.ZodNumber>;
88
+ radiusIn: z.ZodOptional<z.ZodNumber>;
89
+ holds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
90
+ provenance: z.ZodOptional<z.ZodString>;
91
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
92
+ id: z.ZodString;
93
+ kind: z.ZodString;
94
+ container: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
95
+ xIn: z.ZodOptional<z.ZodNumber>;
96
+ yIn: z.ZodOptional<z.ZodNumber>;
97
+ radiusIn: z.ZodOptional<z.ZodNumber>;
98
+ holds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
99
+ provenance: z.ZodOptional<z.ZodString>;
100
+ }, z.ZodTypeAny, "passthrough">>;
101
+ /** Something the robot aims at. Same openness as elements. */
102
+ export declare const targetSchema: z.ZodObject<{
103
+ id: z.ZodString;
104
+ kind: z.ZodString;
105
+ provenance: z.ZodOptional<z.ZodString>;
106
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
107
+ id: z.ZodString;
108
+ kind: z.ZodString;
109
+ provenance: z.ZodOptional<z.ZodString>;
110
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
111
+ id: z.ZodString;
112
+ kind: z.ZodString;
113
+ provenance: z.ZodOptional<z.ZodString>;
114
+ }, z.ZodTypeAny, "passthrough">>;
115
+ /**
116
+ * Where the field perimeter sits in the image, in image pixels (x right, y down from the image's
117
+ * top-left corner). The canvas maps this box onto the field's `sizeIn` in the declared frame.
118
+ */
119
+ export declare const imagePxBoundsSchema: z.ZodEffects<z.ZodObject<{
120
+ left: z.ZodNumber;
121
+ top: z.ZodNumber;
122
+ right: z.ZodNumber;
123
+ bottom: z.ZodNumber;
124
+ }, "strip", z.ZodTypeAny, {
125
+ left: number;
126
+ top: number;
127
+ right: number;
128
+ bottom: number;
129
+ }, {
130
+ left: number;
131
+ top: number;
132
+ right: number;
133
+ bottom: number;
134
+ }>, {
135
+ left: number;
136
+ top: number;
137
+ right: number;
138
+ bottom: number;
139
+ }, {
140
+ left: number;
141
+ top: number;
142
+ right: number;
143
+ bottom: number;
144
+ }>;
145
+ /** One named look of the same picture, such as a dark or a printable light background. */
146
+ export declare const fieldImageVariantSchema: z.ZodObject<{
147
+ name: z.ZodString;
148
+ src: z.ZodString;
149
+ }, "strip", z.ZodTypeAny, {
150
+ name: string;
151
+ src: string;
152
+ }, {
153
+ name: string;
154
+ src: string;
155
+ }>;
156
+ /**
157
+ * An optional picture of the field drawn under the vector layer (format version 2;
158
+ * site/docs/file-format.md has the exact mapping).
159
+ *
160
+ * - `src`: a path relative to the field file, or `app:<path>` for an asset the app ships (resolved
161
+ * against the app's public root, so `app:fields/biobuzz/biobuzz-dark.webp` is
162
+ * `apps/web/public/fields/biobuzz/biobuzz-dark.webp`).
163
+ * - `pxBoundsIn`: the box in the stored image, in image pixels, that the field perimeter occupies,
164
+ * or `"fullBleed"` when the perimeter is the image's own edge.
165
+ * - `rotationDeg`: how far the cropped image is turned **clockwise as seen on screen** before it is
166
+ * laid over the field in the field's default view; absent means 0.
167
+ * - `variants`: other looks of the same picture (same geometry, same credit), by name, for a
168
+ * field-style setting; `src` is the one drawn when nothing else is chosen.
169
+ *
170
+ * The image is only a picture: no check reads it, and the vector geometry stays the truth.
171
+ */
172
+ export declare const fieldImageSchema: z.ZodObject<{
173
+ src: z.ZodString;
174
+ credit: z.ZodString;
175
+ pxBoundsIn: z.ZodUnion<[z.ZodLiteral<"fullBleed">, z.ZodEffects<z.ZodObject<{
176
+ left: z.ZodNumber;
177
+ top: z.ZodNumber;
178
+ right: z.ZodNumber;
179
+ bottom: z.ZodNumber;
180
+ }, "strip", z.ZodTypeAny, {
181
+ left: number;
182
+ top: number;
183
+ right: number;
184
+ bottom: number;
185
+ }, {
186
+ left: number;
187
+ top: number;
188
+ right: number;
189
+ bottom: number;
190
+ }>, {
191
+ left: number;
192
+ top: number;
193
+ right: number;
194
+ bottom: number;
195
+ }, {
196
+ left: number;
197
+ top: number;
198
+ right: number;
199
+ bottom: number;
200
+ }>]>;
201
+ rotationDeg: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>;
202
+ variants: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{
203
+ name: z.ZodString;
204
+ src: z.ZodString;
205
+ }, "strip", z.ZodTypeAny, {
206
+ name: string;
207
+ src: string;
208
+ }, {
209
+ name: string;
210
+ src: string;
211
+ }>, "many">, {
212
+ name: string;
213
+ src: string;
214
+ }[], {
215
+ name: string;
216
+ src: string;
217
+ }[]>>;
218
+ provenance: z.ZodOptional<z.ZodString>;
219
+ }, "strip", z.ZodTypeAny, {
220
+ src: string;
221
+ credit: string;
222
+ pxBoundsIn: {
223
+ left: number;
224
+ top: number;
225
+ right: number;
226
+ bottom: number;
227
+ } | "fullBleed";
228
+ provenance?: string | undefined;
229
+ rotationDeg?: 0 | 90 | 180 | 270 | undefined;
230
+ variants?: {
231
+ name: string;
232
+ src: string;
233
+ }[] | undefined;
234
+ }, {
235
+ src: string;
236
+ credit: string;
237
+ pxBoundsIn: {
238
+ left: number;
239
+ top: number;
240
+ right: number;
241
+ bottom: number;
242
+ } | "fullBleed";
243
+ provenance?: string | undefined;
244
+ rotationDeg?: 0 | 90 | 180 | 270 | undefined;
245
+ variants?: {
246
+ name: string;
247
+ src: string;
248
+ }[] | undefined;
249
+ }>;
250
+ /**
251
+ * `*.field.json`: the season, as vector geometry in the declared frame
252
+ * (site/docs/file-format.md). Key declaration order is the canonical file order.
253
+ */
254
+ export declare const fieldSchema: z.ZodObject<{
255
+ $schema: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
256
+ formatVersion: z.ZodLiteral<2>;
257
+ season: z.ZodString;
258
+ name: z.ZodString;
259
+ frame: z.ZodObject<{
260
+ origin: z.ZodEnum<["centre", "corner"]>;
261
+ xAxis: z.ZodString;
262
+ yAxis: z.ZodString;
263
+ headingZero: z.ZodEnum<["+x", "+y"]>;
264
+ headingPositive: z.ZodEnum<["ccw", "cw"]>;
265
+ units: z.ZodEnum<["in"]>;
266
+ canonicalAlliance: z.ZodEnum<["RED", "BLUE"]>;
267
+ mirror: z.ZodEnum<["pointSymmetry", "mirrorX", "mirrorY", "none"]>;
268
+ view: z.ZodOptional<z.ZodObject<{
269
+ audienceAt: z.ZodEnum<["bottom", "top", "left", "right"]>;
270
+ }, "strip", z.ZodTypeAny, {
271
+ audienceAt: "left" | "top" | "right" | "bottom";
272
+ }, {
273
+ audienceAt: "left" | "top" | "right" | "bottom";
274
+ }>>;
275
+ }, "strip", z.ZodTypeAny, {
276
+ origin: "centre" | "corner";
277
+ xAxis: string;
278
+ yAxis: string;
279
+ headingZero: "+x" | "+y";
280
+ headingPositive: "ccw" | "cw";
281
+ units: "in";
282
+ canonicalAlliance: "RED" | "BLUE";
283
+ mirror: "pointSymmetry" | "mirrorX" | "mirrorY" | "none";
284
+ view?: {
285
+ audienceAt: "left" | "top" | "right" | "bottom";
286
+ } | undefined;
287
+ }, {
288
+ origin: "centre" | "corner";
289
+ xAxis: string;
290
+ yAxis: string;
291
+ headingZero: "+x" | "+y";
292
+ headingPositive: "ccw" | "cw";
293
+ units: "in";
294
+ canonicalAlliance: "RED" | "BLUE";
295
+ mirror: "pointSymmetry" | "mirrorX" | "mirrorY" | "none";
296
+ view?: {
297
+ audienceAt: "left" | "top" | "right" | "bottom";
298
+ } | undefined;
299
+ }>;
300
+ sizeIn: z.ZodObject<{
301
+ xIn: z.ZodNumber;
302
+ yIn: z.ZodNumber;
303
+ }, "strip", z.ZodTypeAny, {
304
+ xIn: number;
305
+ yIn: number;
306
+ }, {
307
+ xIn: number;
308
+ yIn: number;
309
+ }>;
310
+ image: z.ZodOptional<z.ZodObject<{
311
+ src: z.ZodString;
312
+ credit: z.ZodString;
313
+ pxBoundsIn: z.ZodUnion<[z.ZodLiteral<"fullBleed">, z.ZodEffects<z.ZodObject<{
314
+ left: z.ZodNumber;
315
+ top: z.ZodNumber;
316
+ right: z.ZodNumber;
317
+ bottom: z.ZodNumber;
318
+ }, "strip", z.ZodTypeAny, {
319
+ left: number;
320
+ top: number;
321
+ right: number;
322
+ bottom: number;
323
+ }, {
324
+ left: number;
325
+ top: number;
326
+ right: number;
327
+ bottom: number;
328
+ }>, {
329
+ left: number;
330
+ top: number;
331
+ right: number;
332
+ bottom: number;
333
+ }, {
334
+ left: number;
335
+ top: number;
336
+ right: number;
337
+ bottom: number;
338
+ }>]>;
339
+ rotationDeg: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>>;
340
+ variants: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{
341
+ name: z.ZodString;
342
+ src: z.ZodString;
343
+ }, "strip", z.ZodTypeAny, {
344
+ name: string;
345
+ src: string;
346
+ }, {
347
+ name: string;
348
+ src: string;
349
+ }>, "many">, {
350
+ name: string;
351
+ src: string;
352
+ }[], {
353
+ name: string;
354
+ src: string;
355
+ }[]>>;
356
+ provenance: z.ZodOptional<z.ZodString>;
357
+ }, "strip", z.ZodTypeAny, {
358
+ src: string;
359
+ credit: string;
360
+ pxBoundsIn: {
361
+ left: number;
362
+ top: number;
363
+ right: number;
364
+ bottom: number;
365
+ } | "fullBleed";
366
+ provenance?: string | undefined;
367
+ rotationDeg?: 0 | 90 | 180 | 270 | undefined;
368
+ variants?: {
369
+ name: string;
370
+ src: string;
371
+ }[] | undefined;
372
+ }, {
373
+ src: string;
374
+ credit: string;
375
+ pxBoundsIn: {
376
+ left: number;
377
+ top: number;
378
+ right: number;
379
+ bottom: number;
380
+ } | "fullBleed";
381
+ provenance?: string | undefined;
382
+ rotationDeg?: 0 | 90 | 180 | 270 | undefined;
383
+ variants?: {
384
+ name: string;
385
+ src: string;
386
+ }[] | undefined;
387
+ }>>;
388
+ periods: z.ZodOptional<z.ZodObject<{
389
+ autoS: z.ZodNumber;
390
+ teleopS: z.ZodNumber;
391
+ }, "strip", z.ZodTypeAny, {
392
+ autoS: number;
393
+ teleopS: number;
394
+ }, {
395
+ autoS: number;
396
+ teleopS: number;
397
+ }>>;
398
+ obstacles: z.ZodOptional<z.ZodArray<z.ZodObject<{
399
+ id: z.ZodString;
400
+ kind: z.ZodLiteral<"box">;
401
+ minXIn: z.ZodNumber;
402
+ maxXIn: z.ZodNumber;
403
+ minYIn: z.ZodNumber;
404
+ maxYIn: z.ZodNumber;
405
+ minZIn: z.ZodNumber;
406
+ maxZIn: z.ZodNumber;
407
+ solidToRobot: z.ZodOptional<z.ZodBoolean>;
408
+ provenance: z.ZodOptional<z.ZodString>;
409
+ }, "strip", z.ZodTypeAny, {
410
+ kind: "box";
411
+ id: string;
412
+ minXIn: number;
413
+ maxXIn: number;
414
+ minYIn: number;
415
+ maxYIn: number;
416
+ minZIn: number;
417
+ maxZIn: number;
418
+ provenance?: string | undefined;
419
+ solidToRobot?: boolean | undefined;
420
+ }, {
421
+ kind: "box";
422
+ id: string;
423
+ minXIn: number;
424
+ maxXIn: number;
425
+ minYIn: number;
426
+ maxYIn: number;
427
+ minZIn: number;
428
+ maxZIn: number;
429
+ provenance?: string | undefined;
430
+ solidToRobot?: boolean | undefined;
431
+ }>, "many">>;
432
+ zones: z.ZodOptional<z.ZodArray<z.ZodObject<{
433
+ id: z.ZodString;
434
+ kind: z.ZodLiteral<"rect">;
435
+ minXIn: z.ZodNumber;
436
+ maxXIn: z.ZodNumber;
437
+ minYIn: z.ZodNumber;
438
+ maxYIn: z.ZodNumber;
439
+ rule: z.ZodOptional<z.ZodString>;
440
+ appliesInAuto: z.ZodOptional<z.ZodBoolean>;
441
+ provenance: z.ZodOptional<z.ZodString>;
442
+ }, "strip", z.ZodTypeAny, {
443
+ kind: "rect";
444
+ id: string;
445
+ minXIn: number;
446
+ maxXIn: number;
447
+ minYIn: number;
448
+ maxYIn: number;
449
+ provenance?: string | undefined;
450
+ rule?: string | undefined;
451
+ appliesInAuto?: boolean | undefined;
452
+ }, {
453
+ kind: "rect";
454
+ id: string;
455
+ minXIn: number;
456
+ maxXIn: number;
457
+ minYIn: number;
458
+ maxYIn: number;
459
+ provenance?: string | undefined;
460
+ rule?: string | undefined;
461
+ appliesInAuto?: boolean | undefined;
462
+ }>, "many">>;
463
+ elements: z.ZodOptional<z.ZodArray<z.ZodObject<{
464
+ id: z.ZodString;
465
+ kind: z.ZodString;
466
+ container: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
467
+ xIn: z.ZodOptional<z.ZodNumber>;
468
+ yIn: z.ZodOptional<z.ZodNumber>;
469
+ radiusIn: z.ZodOptional<z.ZodNumber>;
470
+ holds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
471
+ provenance: z.ZodOptional<z.ZodString>;
472
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
473
+ id: z.ZodString;
474
+ kind: z.ZodString;
475
+ container: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
476
+ xIn: z.ZodOptional<z.ZodNumber>;
477
+ yIn: z.ZodOptional<z.ZodNumber>;
478
+ radiusIn: z.ZodOptional<z.ZodNumber>;
479
+ holds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
480
+ provenance: z.ZodOptional<z.ZodString>;
481
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
482
+ id: z.ZodString;
483
+ kind: z.ZodString;
484
+ container: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
485
+ xIn: z.ZodOptional<z.ZodNumber>;
486
+ yIn: z.ZodOptional<z.ZodNumber>;
487
+ radiusIn: z.ZodOptional<z.ZodNumber>;
488
+ holds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
489
+ provenance: z.ZodOptional<z.ZodString>;
490
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
491
+ targets: z.ZodOptional<z.ZodArray<z.ZodObject<{
492
+ id: z.ZodString;
493
+ kind: z.ZodString;
494
+ provenance: z.ZodOptional<z.ZodString>;
495
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
496
+ id: z.ZodString;
497
+ kind: z.ZodString;
498
+ provenance: z.ZodOptional<z.ZodString>;
499
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
500
+ id: z.ZodString;
501
+ kind: z.ZodString;
502
+ provenance: z.ZodOptional<z.ZodString>;
503
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
504
+ startRules: z.ZodOptional<z.ZodObject<{
505
+ touchingWall: z.ZodOptional<z.ZodBoolean>;
506
+ ownHalf: z.ZodOptional<z.ZodBoolean>;
507
+ notInZones: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
508
+ notTouchingContainers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
509
+ holds: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
510
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
511
+ touchingWall: z.ZodOptional<z.ZodBoolean>;
512
+ ownHalf: z.ZodOptional<z.ZodBoolean>;
513
+ notInZones: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
514
+ notTouchingContainers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
515
+ holds: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
516
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
517
+ touchingWall: z.ZodOptional<z.ZodBoolean>;
518
+ ownHalf: z.ZodOptional<z.ZodBoolean>;
519
+ notInZones: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
520
+ notTouchingContainers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
521
+ holds: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
522
+ }, z.ZodTypeAny, "passthrough">>>;
523
+ rules: z.ZodOptional<z.ZodObject<{
524
+ plugin: z.ZodString;
525
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
526
+ plugin: z.ZodString;
527
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
528
+ plugin: z.ZodString;
529
+ }, z.ZodTypeAny, "passthrough">>>;
530
+ }, "strip", z.ZodTypeAny, {
531
+ name: string;
532
+ formatVersion: 2;
533
+ season: string;
534
+ frame: {
535
+ origin: "centre" | "corner";
536
+ xAxis: string;
537
+ yAxis: string;
538
+ headingZero: "+x" | "+y";
539
+ headingPositive: "ccw" | "cw";
540
+ units: "in";
541
+ canonicalAlliance: "RED" | "BLUE";
542
+ mirror: "pointSymmetry" | "mirrorX" | "mirrorY" | "none";
543
+ view?: {
544
+ audienceAt: "left" | "top" | "right" | "bottom";
545
+ } | undefined;
546
+ };
547
+ sizeIn: {
548
+ xIn: number;
549
+ yIn: number;
550
+ };
551
+ $schema?: string | undefined;
552
+ image?: {
553
+ src: string;
554
+ credit: string;
555
+ pxBoundsIn: {
556
+ left: number;
557
+ top: number;
558
+ right: number;
559
+ bottom: number;
560
+ } | "fullBleed";
561
+ provenance?: string | undefined;
562
+ rotationDeg?: 0 | 90 | 180 | 270 | undefined;
563
+ variants?: {
564
+ name: string;
565
+ src: string;
566
+ }[] | undefined;
567
+ } | undefined;
568
+ periods?: {
569
+ autoS: number;
570
+ teleopS: number;
571
+ } | undefined;
572
+ obstacles?: {
573
+ kind: "box";
574
+ id: string;
575
+ minXIn: number;
576
+ maxXIn: number;
577
+ minYIn: number;
578
+ maxYIn: number;
579
+ minZIn: number;
580
+ maxZIn: number;
581
+ provenance?: string | undefined;
582
+ solidToRobot?: boolean | undefined;
583
+ }[] | undefined;
584
+ zones?: {
585
+ kind: "rect";
586
+ id: string;
587
+ minXIn: number;
588
+ maxXIn: number;
589
+ minYIn: number;
590
+ maxYIn: number;
591
+ provenance?: string | undefined;
592
+ rule?: string | undefined;
593
+ appliesInAuto?: boolean | undefined;
594
+ }[] | undefined;
595
+ elements?: z.objectOutputType<{
596
+ id: z.ZodString;
597
+ kind: z.ZodString;
598
+ container: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
599
+ xIn: z.ZodOptional<z.ZodNumber>;
600
+ yIn: z.ZodOptional<z.ZodNumber>;
601
+ radiusIn: z.ZodOptional<z.ZodNumber>;
602
+ holds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
603
+ provenance: z.ZodOptional<z.ZodString>;
604
+ }, z.ZodTypeAny, "passthrough">[] | undefined;
605
+ targets?: z.objectOutputType<{
606
+ id: z.ZodString;
607
+ kind: z.ZodString;
608
+ provenance: z.ZodOptional<z.ZodString>;
609
+ }, z.ZodTypeAny, "passthrough">[] | undefined;
610
+ startRules?: z.objectOutputType<{
611
+ touchingWall: z.ZodOptional<z.ZodBoolean>;
612
+ ownHalf: z.ZodOptional<z.ZodBoolean>;
613
+ notInZones: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
614
+ notTouchingContainers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
615
+ holds: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
616
+ }, z.ZodTypeAny, "passthrough"> | undefined;
617
+ rules?: z.objectOutputType<{
618
+ plugin: z.ZodString;
619
+ }, z.ZodTypeAny, "passthrough"> | undefined;
620
+ }, {
621
+ name: string;
622
+ formatVersion: 2;
623
+ season: string;
624
+ frame: {
625
+ origin: "centre" | "corner";
626
+ xAxis: string;
627
+ yAxis: string;
628
+ headingZero: "+x" | "+y";
629
+ headingPositive: "ccw" | "cw";
630
+ units: "in";
631
+ canonicalAlliance: "RED" | "BLUE";
632
+ mirror: "pointSymmetry" | "mirrorX" | "mirrorY" | "none";
633
+ view?: {
634
+ audienceAt: "left" | "top" | "right" | "bottom";
635
+ } | undefined;
636
+ };
637
+ sizeIn: {
638
+ xIn: number;
639
+ yIn: number;
640
+ };
641
+ $schema?: string | undefined;
642
+ image?: {
643
+ src: string;
644
+ credit: string;
645
+ pxBoundsIn: {
646
+ left: number;
647
+ top: number;
648
+ right: number;
649
+ bottom: number;
650
+ } | "fullBleed";
651
+ provenance?: string | undefined;
652
+ rotationDeg?: 0 | 90 | 180 | 270 | undefined;
653
+ variants?: {
654
+ name: string;
655
+ src: string;
656
+ }[] | undefined;
657
+ } | undefined;
658
+ periods?: {
659
+ autoS: number;
660
+ teleopS: number;
661
+ } | undefined;
662
+ obstacles?: {
663
+ kind: "box";
664
+ id: string;
665
+ minXIn: number;
666
+ maxXIn: number;
667
+ minYIn: number;
668
+ maxYIn: number;
669
+ minZIn: number;
670
+ maxZIn: number;
671
+ provenance?: string | undefined;
672
+ solidToRobot?: boolean | undefined;
673
+ }[] | undefined;
674
+ zones?: {
675
+ kind: "rect";
676
+ id: string;
677
+ minXIn: number;
678
+ maxXIn: number;
679
+ minYIn: number;
680
+ maxYIn: number;
681
+ provenance?: string | undefined;
682
+ rule?: string | undefined;
683
+ appliesInAuto?: boolean | undefined;
684
+ }[] | undefined;
685
+ elements?: z.objectInputType<{
686
+ id: z.ZodString;
687
+ kind: z.ZodString;
688
+ container: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
689
+ xIn: z.ZodOptional<z.ZodNumber>;
690
+ yIn: z.ZodOptional<z.ZodNumber>;
691
+ radiusIn: z.ZodOptional<z.ZodNumber>;
692
+ holds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
693
+ provenance: z.ZodOptional<z.ZodString>;
694
+ }, z.ZodTypeAny, "passthrough">[] | undefined;
695
+ targets?: z.objectInputType<{
696
+ id: z.ZodString;
697
+ kind: z.ZodString;
698
+ provenance: z.ZodOptional<z.ZodString>;
699
+ }, z.ZodTypeAny, "passthrough">[] | undefined;
700
+ startRules?: z.objectInputType<{
701
+ touchingWall: z.ZodOptional<z.ZodBoolean>;
702
+ ownHalf: z.ZodOptional<z.ZodBoolean>;
703
+ notInZones: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
704
+ notTouchingContainers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
705
+ holds: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
706
+ }, z.ZodTypeAny, "passthrough"> | undefined;
707
+ rules?: z.objectInputType<{
708
+ plugin: z.ZodString;
709
+ }, z.ZodTypeAny, "passthrough"> | undefined;
710
+ }>;
711
+ export type Obstacle = z.infer<typeof obstacleSchema>;
712
+ export type Zone = z.infer<typeof zoneSchema>;
713
+ export type FieldElement = z.infer<typeof elementSchema>;
714
+ export type FieldTarget = z.infer<typeof targetSchema>;
715
+ export type FieldImage = z.infer<typeof fieldImageSchema>;
716
+ export type FieldImageVariant = z.infer<typeof fieldImageVariantSchema>;
717
+ export type ImagePxBounds = z.infer<typeof imagePxBoundsSchema>;
718
+ export type Field = z.infer<typeof fieldSchema>;
719
+ //# sourceMappingURL=field.d.ts.map