@nativemason/contracts 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1652 @@
1
+ import { z } from 'zod';
2
+ /** Each nested Figma node is validated independently by the bounded importer. */
3
+ export declare const FigmaNodeSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ type: z.ZodString;
6
+ name: z.ZodOptional<z.ZodString>;
7
+ absoluteBoundingBox: z.ZodOptional<z.ZodObject<{
8
+ x: z.ZodNumber;
9
+ y: z.ZodNumber;
10
+ width: z.ZodNumber;
11
+ height: z.ZodNumber;
12
+ }, "strict", z.ZodTypeAny, {
13
+ x: number;
14
+ y: number;
15
+ width: number;
16
+ height: number;
17
+ }, {
18
+ x: number;
19
+ y: number;
20
+ width: number;
21
+ height: number;
22
+ }>>;
23
+ layoutMode: z.ZodOptional<z.ZodEnum<["NONE", "HORIZONTAL", "VERTICAL"]>>;
24
+ itemSpacing: z.ZodOptional<z.ZodNumber>;
25
+ counterAxisAlignItems: z.ZodOptional<z.ZodEnum<["MIN", "CENTER", "MAX", "BASELINE"]>>;
26
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
27
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
28
+ id: z.ZodString;
29
+ type: z.ZodString;
30
+ name: z.ZodOptional<z.ZodString>;
31
+ absoluteBoundingBox: z.ZodOptional<z.ZodObject<{
32
+ x: z.ZodNumber;
33
+ y: z.ZodNumber;
34
+ width: z.ZodNumber;
35
+ height: z.ZodNumber;
36
+ }, "strict", z.ZodTypeAny, {
37
+ x: number;
38
+ y: number;
39
+ width: number;
40
+ height: number;
41
+ }, {
42
+ x: number;
43
+ y: number;
44
+ width: number;
45
+ height: number;
46
+ }>>;
47
+ layoutMode: z.ZodOptional<z.ZodEnum<["NONE", "HORIZONTAL", "VERTICAL"]>>;
48
+ itemSpacing: z.ZodOptional<z.ZodNumber>;
49
+ counterAxisAlignItems: z.ZodOptional<z.ZodEnum<["MIN", "CENTER", "MAX", "BASELINE"]>>;
50
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
51
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
52
+ id: z.ZodString;
53
+ type: z.ZodString;
54
+ name: z.ZodOptional<z.ZodString>;
55
+ absoluteBoundingBox: z.ZodOptional<z.ZodObject<{
56
+ x: z.ZodNumber;
57
+ y: z.ZodNumber;
58
+ width: z.ZodNumber;
59
+ height: z.ZodNumber;
60
+ }, "strict", z.ZodTypeAny, {
61
+ x: number;
62
+ y: number;
63
+ width: number;
64
+ height: number;
65
+ }, {
66
+ x: number;
67
+ y: number;
68
+ width: number;
69
+ height: number;
70
+ }>>;
71
+ layoutMode: z.ZodOptional<z.ZodEnum<["NONE", "HORIZONTAL", "VERTICAL"]>>;
72
+ itemSpacing: z.ZodOptional<z.ZodNumber>;
73
+ counterAxisAlignItems: z.ZodOptional<z.ZodEnum<["MIN", "CENTER", "MAX", "BASELINE"]>>;
74
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
75
+ }, z.ZodTypeAny, "passthrough">>;
76
+ export type FigmaNode = z.infer<typeof FigmaNodeSchema>;
77
+ export declare const DesignIntentSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
78
+ kind: z.ZodLiteral<"figma-auto-layout">;
79
+ frame: z.ZodObject<{
80
+ id: z.ZodString;
81
+ type: z.ZodString;
82
+ name: z.ZodOptional<z.ZodString>;
83
+ absoluteBoundingBox: z.ZodOptional<z.ZodObject<{
84
+ x: z.ZodNumber;
85
+ y: z.ZodNumber;
86
+ width: z.ZodNumber;
87
+ height: z.ZodNumber;
88
+ }, "strict", z.ZodTypeAny, {
89
+ x: number;
90
+ y: number;
91
+ width: number;
92
+ height: number;
93
+ }, {
94
+ x: number;
95
+ y: number;
96
+ width: number;
97
+ height: number;
98
+ }>>;
99
+ layoutMode: z.ZodOptional<z.ZodEnum<["NONE", "HORIZONTAL", "VERTICAL"]>>;
100
+ itemSpacing: z.ZodOptional<z.ZodNumber>;
101
+ counterAxisAlignItems: z.ZodOptional<z.ZodEnum<["MIN", "CENTER", "MAX", "BASELINE"]>>;
102
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
103
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
104
+ id: z.ZodString;
105
+ type: z.ZodString;
106
+ name: z.ZodOptional<z.ZodString>;
107
+ absoluteBoundingBox: z.ZodOptional<z.ZodObject<{
108
+ x: z.ZodNumber;
109
+ y: z.ZodNumber;
110
+ width: z.ZodNumber;
111
+ height: z.ZodNumber;
112
+ }, "strict", z.ZodTypeAny, {
113
+ x: number;
114
+ y: number;
115
+ width: number;
116
+ height: number;
117
+ }, {
118
+ x: number;
119
+ y: number;
120
+ width: number;
121
+ height: number;
122
+ }>>;
123
+ layoutMode: z.ZodOptional<z.ZodEnum<["NONE", "HORIZONTAL", "VERTICAL"]>>;
124
+ itemSpacing: z.ZodOptional<z.ZodNumber>;
125
+ counterAxisAlignItems: z.ZodOptional<z.ZodEnum<["MIN", "CENTER", "MAX", "BASELINE"]>>;
126
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
127
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
128
+ id: z.ZodString;
129
+ type: z.ZodString;
130
+ name: z.ZodOptional<z.ZodString>;
131
+ absoluteBoundingBox: z.ZodOptional<z.ZodObject<{
132
+ x: z.ZodNumber;
133
+ y: z.ZodNumber;
134
+ width: z.ZodNumber;
135
+ height: z.ZodNumber;
136
+ }, "strict", z.ZodTypeAny, {
137
+ x: number;
138
+ y: number;
139
+ width: number;
140
+ height: number;
141
+ }, {
142
+ x: number;
143
+ y: number;
144
+ width: number;
145
+ height: number;
146
+ }>>;
147
+ layoutMode: z.ZodOptional<z.ZodEnum<["NONE", "HORIZONTAL", "VERTICAL"]>>;
148
+ itemSpacing: z.ZodOptional<z.ZodNumber>;
149
+ counterAxisAlignItems: z.ZodOptional<z.ZodEnum<["MIN", "CENTER", "MAX", "BASELINE"]>>;
150
+ children: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
151
+ }, z.ZodTypeAny, "passthrough">>;
152
+ elementMap: z.ZodRecord<z.ZodString, z.ZodString>;
153
+ logicalUnitsPerDesignUnit: z.ZodDefault<z.ZodNumber>;
154
+ scenarioId: z.ZodString;
155
+ profile: z.ZodObject<{
156
+ window: z.ZodObject<{
157
+ width: z.ZodNumber;
158
+ height: z.ZodNumber;
159
+ }, "strict", z.ZodTypeAny, {
160
+ width: number;
161
+ height: number;
162
+ }, {
163
+ width: number;
164
+ height: number;
165
+ }>;
166
+ pixelRatio: z.ZodNumber;
167
+ fontScale: z.ZodNumber;
168
+ insets: z.ZodObject<{
169
+ top: z.ZodNumber;
170
+ right: z.ZodNumber;
171
+ bottom: z.ZodNumber;
172
+ left: z.ZodNumber;
173
+ }, "strict", z.ZodTypeAny, {
174
+ top: number;
175
+ right: number;
176
+ bottom: number;
177
+ left: number;
178
+ }, {
179
+ top: number;
180
+ right: number;
181
+ bottom: number;
182
+ left: number;
183
+ }>;
184
+ root: z.ZodObject<{
185
+ x: z.ZodNumber;
186
+ y: z.ZodNumber;
187
+ width: z.ZodNumber;
188
+ height: z.ZodNumber;
189
+ }, "strict", z.ZodTypeAny, {
190
+ x: number;
191
+ y: number;
192
+ width: number;
193
+ height: number;
194
+ }, {
195
+ x: number;
196
+ y: number;
197
+ width: number;
198
+ height: number;
199
+ }>;
200
+ orientation: z.ZodEnum<["portrait", "landscape"]>;
201
+ }, "strict", z.ZodTypeAny, {
202
+ window: {
203
+ width: number;
204
+ height: number;
205
+ };
206
+ pixelRatio: number;
207
+ fontScale: number;
208
+ insets: {
209
+ top: number;
210
+ right: number;
211
+ bottom: number;
212
+ left: number;
213
+ };
214
+ root: {
215
+ x: number;
216
+ y: number;
217
+ width: number;
218
+ height: number;
219
+ };
220
+ orientation: "portrait" | "landscape";
221
+ }, {
222
+ window: {
223
+ width: number;
224
+ height: number;
225
+ };
226
+ pixelRatio: number;
227
+ fontScale: number;
228
+ insets: {
229
+ top: number;
230
+ right: number;
231
+ bottom: number;
232
+ left: number;
233
+ };
234
+ root: {
235
+ x: number;
236
+ y: number;
237
+ width: number;
238
+ height: number;
239
+ };
240
+ orientation: "portrait" | "landscape";
241
+ }>;
242
+ tolerance: z.ZodDefault<z.ZodNumber>;
243
+ }, "strict", z.ZodTypeAny, {
244
+ tolerance: number;
245
+ scenarioId: string;
246
+ profile: {
247
+ window: {
248
+ width: number;
249
+ height: number;
250
+ };
251
+ pixelRatio: number;
252
+ fontScale: number;
253
+ insets: {
254
+ top: number;
255
+ right: number;
256
+ bottom: number;
257
+ left: number;
258
+ };
259
+ root: {
260
+ x: number;
261
+ y: number;
262
+ width: number;
263
+ height: number;
264
+ };
265
+ orientation: "portrait" | "landscape";
266
+ };
267
+ kind: "figma-auto-layout";
268
+ frame: {
269
+ type: string;
270
+ id: string;
271
+ name?: string | undefined;
272
+ absoluteBoundingBox?: {
273
+ x: number;
274
+ y: number;
275
+ width: number;
276
+ height: number;
277
+ } | undefined;
278
+ layoutMode?: "NONE" | "HORIZONTAL" | "VERTICAL" | undefined;
279
+ itemSpacing?: number | undefined;
280
+ counterAxisAlignItems?: "MIN" | "CENTER" | "MAX" | "BASELINE" | undefined;
281
+ children?: unknown[] | undefined;
282
+ } & {
283
+ [k: string]: unknown;
284
+ };
285
+ elementMap: Record<string, string>;
286
+ logicalUnitsPerDesignUnit: number;
287
+ }, {
288
+ scenarioId: string;
289
+ profile: {
290
+ window: {
291
+ width: number;
292
+ height: number;
293
+ };
294
+ pixelRatio: number;
295
+ fontScale: number;
296
+ insets: {
297
+ top: number;
298
+ right: number;
299
+ bottom: number;
300
+ left: number;
301
+ };
302
+ root: {
303
+ x: number;
304
+ y: number;
305
+ width: number;
306
+ height: number;
307
+ };
308
+ orientation: "portrait" | "landscape";
309
+ };
310
+ kind: "figma-auto-layout";
311
+ frame: {
312
+ type: string;
313
+ id: string;
314
+ name?: string | undefined;
315
+ absoluteBoundingBox?: {
316
+ x: number;
317
+ y: number;
318
+ width: number;
319
+ height: number;
320
+ } | undefined;
321
+ layoutMode?: "NONE" | "HORIZONTAL" | "VERTICAL" | undefined;
322
+ itemSpacing?: number | undefined;
323
+ counterAxisAlignItems?: "MIN" | "CENTER" | "MAX" | "BASELINE" | undefined;
324
+ children?: unknown[] | undefined;
325
+ } & {
326
+ [k: string]: unknown;
327
+ };
328
+ elementMap: Record<string, string>;
329
+ tolerance?: number | undefined;
330
+ logicalUnitsPerDesignUnit?: number | undefined;
331
+ }>, z.ZodObject<{
332
+ kind: z.ZodLiteral<"reference-annotations">;
333
+ image: z.ZodObject<{
334
+ sha256: z.ZodString;
335
+ width: z.ZodNumber;
336
+ height: z.ZodNumber;
337
+ }, "strict", z.ZodTypeAny, {
338
+ width: number;
339
+ height: number;
340
+ sha256: string;
341
+ }, {
342
+ width: number;
343
+ height: number;
344
+ sha256: string;
345
+ }>;
346
+ appRootPixels: z.ZodObject<{
347
+ x: z.ZodNumber;
348
+ y: z.ZodNumber;
349
+ width: z.ZodNumber;
350
+ height: z.ZodNumber;
351
+ }, "strict", z.ZodTypeAny, {
352
+ x: number;
353
+ y: number;
354
+ width: number;
355
+ height: number;
356
+ }, {
357
+ x: number;
358
+ y: number;
359
+ width: number;
360
+ height: number;
361
+ }>;
362
+ pixelsPerLogicalUnit: z.ZodNumber;
363
+ annotations: z.ZodArray<z.ZodObject<{
364
+ elementId: z.ZodString;
365
+ rectPixels: z.ZodObject<{
366
+ x: z.ZodNumber;
367
+ y: z.ZodNumber;
368
+ width: z.ZodNumber;
369
+ height: z.ZodNumber;
370
+ }, "strict", z.ZodTypeAny, {
371
+ x: number;
372
+ y: number;
373
+ width: number;
374
+ height: number;
375
+ }, {
376
+ x: number;
377
+ y: number;
378
+ width: number;
379
+ height: number;
380
+ }>;
381
+ }, "strict", z.ZodTypeAny, {
382
+ elementId: string;
383
+ rectPixels: {
384
+ x: number;
385
+ y: number;
386
+ width: number;
387
+ height: number;
388
+ };
389
+ }, {
390
+ elementId: string;
391
+ rectPixels: {
392
+ x: number;
393
+ y: number;
394
+ width: number;
395
+ height: number;
396
+ };
397
+ }>, "many">;
398
+ assertions: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
399
+ type: z.ZodLiteral<"textFits">;
400
+ elementId: z.ZodString;
401
+ id: z.ZodString;
402
+ tolerance: z.ZodDefault<z.ZodNumber>;
403
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
404
+ }, "strict", z.ZodTypeAny, {
405
+ type: "textFits";
406
+ elementId: string;
407
+ id: string;
408
+ tolerance: number;
409
+ pixelAware?: boolean | undefined;
410
+ }, {
411
+ type: "textFits";
412
+ elementId: string;
413
+ id: string;
414
+ tolerance?: number | undefined;
415
+ pixelAware?: boolean | undefined;
416
+ }>, z.ZodObject<{
417
+ type: z.ZodLiteral<"rect">;
418
+ elementId: z.ZodString;
419
+ target: z.ZodObject<{
420
+ x: z.ZodNumber;
421
+ y: z.ZodNumber;
422
+ width: z.ZodNumber;
423
+ height: z.ZodNumber;
424
+ }, "strict", z.ZodTypeAny, {
425
+ x: number;
426
+ y: number;
427
+ width: number;
428
+ height: number;
429
+ }, {
430
+ x: number;
431
+ y: number;
432
+ width: number;
433
+ height: number;
434
+ }>;
435
+ id: z.ZodString;
436
+ tolerance: z.ZodDefault<z.ZodNumber>;
437
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
438
+ }, "strict", z.ZodTypeAny, {
439
+ type: "rect";
440
+ elementId: string;
441
+ id: string;
442
+ tolerance: number;
443
+ target: {
444
+ x: number;
445
+ y: number;
446
+ width: number;
447
+ height: number;
448
+ };
449
+ pixelAware?: boolean | undefined;
450
+ }, {
451
+ type: "rect";
452
+ elementId: string;
453
+ id: string;
454
+ target: {
455
+ x: number;
456
+ y: number;
457
+ width: number;
458
+ height: number;
459
+ };
460
+ tolerance?: number | undefined;
461
+ pixelAware?: boolean | undefined;
462
+ }>, z.ZodObject<{
463
+ type: z.ZodLiteral<"minTouchTarget">;
464
+ elementId: z.ZodString;
465
+ width: z.ZodDefault<z.ZodNumber>;
466
+ height: z.ZodDefault<z.ZodNumber>;
467
+ id: z.ZodString;
468
+ tolerance: z.ZodDefault<z.ZodNumber>;
469
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
470
+ }, "strict", z.ZodTypeAny, {
471
+ type: "minTouchTarget";
472
+ width: number;
473
+ height: number;
474
+ elementId: string;
475
+ id: string;
476
+ tolerance: number;
477
+ pixelAware?: boolean | undefined;
478
+ }, {
479
+ type: "minTouchTarget";
480
+ elementId: string;
481
+ id: string;
482
+ width?: number | undefined;
483
+ height?: number | undefined;
484
+ tolerance?: number | undefined;
485
+ pixelAware?: boolean | undefined;
486
+ }>, z.ZodObject<{
487
+ type: z.ZodLiteral<"align">;
488
+ elementIds: z.ZodArray<z.ZodString, "many">;
489
+ axis: z.ZodEnum<["x", "y"]>;
490
+ edge: z.ZodEnum<["start", "center", "end"]>;
491
+ id: z.ZodString;
492
+ tolerance: z.ZodDefault<z.ZodNumber>;
493
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
494
+ }, "strict", z.ZodTypeAny, {
495
+ type: "align";
496
+ elementIds: string[];
497
+ id: string;
498
+ tolerance: number;
499
+ axis: "x" | "y";
500
+ edge: "start" | "center" | "end";
501
+ pixelAware?: boolean | undefined;
502
+ }, {
503
+ type: "align";
504
+ elementIds: string[];
505
+ id: string;
506
+ axis: "x" | "y";
507
+ edge: "start" | "center" | "end";
508
+ tolerance?: number | undefined;
509
+ pixelAware?: boolean | undefined;
510
+ }>, z.ZodObject<{
511
+ type: z.ZodLiteral<"gap">;
512
+ first: z.ZodString;
513
+ second: z.ZodString;
514
+ axis: z.ZodEnum<["x", "y"]>;
515
+ value: z.ZodNumber;
516
+ id: z.ZodString;
517
+ tolerance: z.ZodDefault<z.ZodNumber>;
518
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
519
+ }, "strict", z.ZodTypeAny, {
520
+ value: number;
521
+ type: "gap";
522
+ id: string;
523
+ tolerance: number;
524
+ axis: "x" | "y";
525
+ first: string;
526
+ second: string;
527
+ pixelAware?: boolean | undefined;
528
+ }, {
529
+ value: number;
530
+ type: "gap";
531
+ id: string;
532
+ axis: "x" | "y";
533
+ first: string;
534
+ second: string;
535
+ tolerance?: number | undefined;
536
+ pixelAware?: boolean | undefined;
537
+ }>, z.ZodObject<{
538
+ type: z.ZodLiteral<"insideSafeArea">;
539
+ elementId: z.ZodString;
540
+ id: z.ZodString;
541
+ tolerance: z.ZodDefault<z.ZodNumber>;
542
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
543
+ }, "strict", z.ZodTypeAny, {
544
+ type: "insideSafeArea";
545
+ elementId: string;
546
+ id: string;
547
+ tolerance: number;
548
+ pixelAware?: boolean | undefined;
549
+ }, {
550
+ type: "insideSafeArea";
551
+ elementId: string;
552
+ id: string;
553
+ tolerance?: number | undefined;
554
+ pixelAware?: boolean | undefined;
555
+ }>, z.ZodObject<{
556
+ type: z.ZodLiteral<"disjoint">;
557
+ first: z.ZodString;
558
+ second: z.ZodString;
559
+ id: z.ZodString;
560
+ tolerance: z.ZodDefault<z.ZodNumber>;
561
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
562
+ }, "strict", z.ZodTypeAny, {
563
+ type: "disjoint";
564
+ id: string;
565
+ tolerance: number;
566
+ first: string;
567
+ second: string;
568
+ pixelAware?: boolean | undefined;
569
+ }, {
570
+ type: "disjoint";
571
+ id: string;
572
+ first: string;
573
+ second: string;
574
+ tolerance?: number | undefined;
575
+ pixelAware?: boolean | undefined;
576
+ }>]>, "many">>;
577
+ scenarioId: z.ZodString;
578
+ profile: z.ZodObject<{
579
+ window: z.ZodObject<{
580
+ width: z.ZodNumber;
581
+ height: z.ZodNumber;
582
+ }, "strict", z.ZodTypeAny, {
583
+ width: number;
584
+ height: number;
585
+ }, {
586
+ width: number;
587
+ height: number;
588
+ }>;
589
+ pixelRatio: z.ZodNumber;
590
+ fontScale: z.ZodNumber;
591
+ insets: z.ZodObject<{
592
+ top: z.ZodNumber;
593
+ right: z.ZodNumber;
594
+ bottom: z.ZodNumber;
595
+ left: z.ZodNumber;
596
+ }, "strict", z.ZodTypeAny, {
597
+ top: number;
598
+ right: number;
599
+ bottom: number;
600
+ left: number;
601
+ }, {
602
+ top: number;
603
+ right: number;
604
+ bottom: number;
605
+ left: number;
606
+ }>;
607
+ root: z.ZodObject<{
608
+ x: z.ZodNumber;
609
+ y: z.ZodNumber;
610
+ width: z.ZodNumber;
611
+ height: z.ZodNumber;
612
+ }, "strict", z.ZodTypeAny, {
613
+ x: number;
614
+ y: number;
615
+ width: number;
616
+ height: number;
617
+ }, {
618
+ x: number;
619
+ y: number;
620
+ width: number;
621
+ height: number;
622
+ }>;
623
+ orientation: z.ZodEnum<["portrait", "landscape"]>;
624
+ }, "strict", z.ZodTypeAny, {
625
+ window: {
626
+ width: number;
627
+ height: number;
628
+ };
629
+ pixelRatio: number;
630
+ fontScale: number;
631
+ insets: {
632
+ top: number;
633
+ right: number;
634
+ bottom: number;
635
+ left: number;
636
+ };
637
+ root: {
638
+ x: number;
639
+ y: number;
640
+ width: number;
641
+ height: number;
642
+ };
643
+ orientation: "portrait" | "landscape";
644
+ }, {
645
+ window: {
646
+ width: number;
647
+ height: number;
648
+ };
649
+ pixelRatio: number;
650
+ fontScale: number;
651
+ insets: {
652
+ top: number;
653
+ right: number;
654
+ bottom: number;
655
+ left: number;
656
+ };
657
+ root: {
658
+ x: number;
659
+ y: number;
660
+ width: number;
661
+ height: number;
662
+ };
663
+ orientation: "portrait" | "landscape";
664
+ }>;
665
+ tolerance: z.ZodDefault<z.ZodNumber>;
666
+ }, "strict", z.ZodTypeAny, {
667
+ tolerance: number;
668
+ scenarioId: string;
669
+ profile: {
670
+ window: {
671
+ width: number;
672
+ height: number;
673
+ };
674
+ pixelRatio: number;
675
+ fontScale: number;
676
+ insets: {
677
+ top: number;
678
+ right: number;
679
+ bottom: number;
680
+ left: number;
681
+ };
682
+ root: {
683
+ x: number;
684
+ y: number;
685
+ width: number;
686
+ height: number;
687
+ };
688
+ orientation: "portrait" | "landscape";
689
+ };
690
+ kind: "reference-annotations";
691
+ image: {
692
+ width: number;
693
+ height: number;
694
+ sha256: string;
695
+ };
696
+ appRootPixels: {
697
+ x: number;
698
+ y: number;
699
+ width: number;
700
+ height: number;
701
+ };
702
+ pixelsPerLogicalUnit: number;
703
+ annotations: {
704
+ elementId: string;
705
+ rectPixels: {
706
+ x: number;
707
+ y: number;
708
+ width: number;
709
+ height: number;
710
+ };
711
+ }[];
712
+ assertions: ({
713
+ type: "textFits";
714
+ elementId: string;
715
+ id: string;
716
+ tolerance: number;
717
+ pixelAware?: boolean | undefined;
718
+ } | {
719
+ type: "rect";
720
+ elementId: string;
721
+ id: string;
722
+ tolerance: number;
723
+ target: {
724
+ x: number;
725
+ y: number;
726
+ width: number;
727
+ height: number;
728
+ };
729
+ pixelAware?: boolean | undefined;
730
+ } | {
731
+ type: "minTouchTarget";
732
+ width: number;
733
+ height: number;
734
+ elementId: string;
735
+ id: string;
736
+ tolerance: number;
737
+ pixelAware?: boolean | undefined;
738
+ } | {
739
+ type: "align";
740
+ elementIds: string[];
741
+ id: string;
742
+ tolerance: number;
743
+ axis: "x" | "y";
744
+ edge: "start" | "center" | "end";
745
+ pixelAware?: boolean | undefined;
746
+ } | {
747
+ value: number;
748
+ type: "gap";
749
+ id: string;
750
+ tolerance: number;
751
+ axis: "x" | "y";
752
+ first: string;
753
+ second: string;
754
+ pixelAware?: boolean | undefined;
755
+ } | {
756
+ type: "insideSafeArea";
757
+ elementId: string;
758
+ id: string;
759
+ tolerance: number;
760
+ pixelAware?: boolean | undefined;
761
+ } | {
762
+ type: "disjoint";
763
+ id: string;
764
+ tolerance: number;
765
+ first: string;
766
+ second: string;
767
+ pixelAware?: boolean | undefined;
768
+ })[];
769
+ }, {
770
+ scenarioId: string;
771
+ profile: {
772
+ window: {
773
+ width: number;
774
+ height: number;
775
+ };
776
+ pixelRatio: number;
777
+ fontScale: number;
778
+ insets: {
779
+ top: number;
780
+ right: number;
781
+ bottom: number;
782
+ left: number;
783
+ };
784
+ root: {
785
+ x: number;
786
+ y: number;
787
+ width: number;
788
+ height: number;
789
+ };
790
+ orientation: "portrait" | "landscape";
791
+ };
792
+ kind: "reference-annotations";
793
+ image: {
794
+ width: number;
795
+ height: number;
796
+ sha256: string;
797
+ };
798
+ appRootPixels: {
799
+ x: number;
800
+ y: number;
801
+ width: number;
802
+ height: number;
803
+ };
804
+ pixelsPerLogicalUnit: number;
805
+ annotations: {
806
+ elementId: string;
807
+ rectPixels: {
808
+ x: number;
809
+ y: number;
810
+ width: number;
811
+ height: number;
812
+ };
813
+ }[];
814
+ tolerance?: number | undefined;
815
+ assertions?: ({
816
+ type: "textFits";
817
+ elementId: string;
818
+ id: string;
819
+ tolerance?: number | undefined;
820
+ pixelAware?: boolean | undefined;
821
+ } | {
822
+ type: "rect";
823
+ elementId: string;
824
+ id: string;
825
+ target: {
826
+ x: number;
827
+ y: number;
828
+ width: number;
829
+ height: number;
830
+ };
831
+ tolerance?: number | undefined;
832
+ pixelAware?: boolean | undefined;
833
+ } | {
834
+ type: "minTouchTarget";
835
+ elementId: string;
836
+ id: string;
837
+ width?: number | undefined;
838
+ height?: number | undefined;
839
+ tolerance?: number | undefined;
840
+ pixelAware?: boolean | undefined;
841
+ } | {
842
+ type: "align";
843
+ elementIds: string[];
844
+ id: string;
845
+ axis: "x" | "y";
846
+ edge: "start" | "center" | "end";
847
+ tolerance?: number | undefined;
848
+ pixelAware?: boolean | undefined;
849
+ } | {
850
+ value: number;
851
+ type: "gap";
852
+ id: string;
853
+ axis: "x" | "y";
854
+ first: string;
855
+ second: string;
856
+ tolerance?: number | undefined;
857
+ pixelAware?: boolean | undefined;
858
+ } | {
859
+ type: "insideSafeArea";
860
+ elementId: string;
861
+ id: string;
862
+ tolerance?: number | undefined;
863
+ pixelAware?: boolean | undefined;
864
+ } | {
865
+ type: "disjoint";
866
+ id: string;
867
+ first: string;
868
+ second: string;
869
+ tolerance?: number | undefined;
870
+ pixelAware?: boolean | undefined;
871
+ })[] | undefined;
872
+ }>]>;
873
+ export type DesignIntent = z.infer<typeof DesignIntentSchema>;
874
+ export declare const DesignIntentResultSchema: z.ZodObject<{
875
+ spec: z.ZodEffects<z.ZodObject<{
876
+ schemaVersion: z.ZodLiteral<1>;
877
+ scenarioId: z.ZodString;
878
+ profile: z.ZodObject<{
879
+ window: z.ZodObject<{
880
+ width: z.ZodNumber;
881
+ height: z.ZodNumber;
882
+ }, "strict", z.ZodTypeAny, {
883
+ width: number;
884
+ height: number;
885
+ }, {
886
+ width: number;
887
+ height: number;
888
+ }>;
889
+ pixelRatio: z.ZodNumber;
890
+ fontScale: z.ZodNumber;
891
+ insets: z.ZodObject<{
892
+ top: z.ZodNumber;
893
+ right: z.ZodNumber;
894
+ bottom: z.ZodNumber;
895
+ left: z.ZodNumber;
896
+ }, "strict", z.ZodTypeAny, {
897
+ top: number;
898
+ right: number;
899
+ bottom: number;
900
+ left: number;
901
+ }, {
902
+ top: number;
903
+ right: number;
904
+ bottom: number;
905
+ left: number;
906
+ }>;
907
+ root: z.ZodObject<{
908
+ x: z.ZodNumber;
909
+ y: z.ZodNumber;
910
+ width: z.ZodNumber;
911
+ height: z.ZodNumber;
912
+ }, "strict", z.ZodTypeAny, {
913
+ x: number;
914
+ y: number;
915
+ width: number;
916
+ height: number;
917
+ }, {
918
+ x: number;
919
+ y: number;
920
+ width: number;
921
+ height: number;
922
+ }>;
923
+ orientation: z.ZodEnum<["portrait", "landscape"]>;
924
+ }, "strict", z.ZodTypeAny, {
925
+ window: {
926
+ width: number;
927
+ height: number;
928
+ };
929
+ pixelRatio: number;
930
+ fontScale: number;
931
+ insets: {
932
+ top: number;
933
+ right: number;
934
+ bottom: number;
935
+ left: number;
936
+ };
937
+ root: {
938
+ x: number;
939
+ y: number;
940
+ width: number;
941
+ height: number;
942
+ };
943
+ orientation: "portrait" | "landscape";
944
+ }, {
945
+ window: {
946
+ width: number;
947
+ height: number;
948
+ };
949
+ pixelRatio: number;
950
+ fontScale: number;
951
+ insets: {
952
+ top: number;
953
+ right: number;
954
+ bottom: number;
955
+ left: number;
956
+ };
957
+ root: {
958
+ x: number;
959
+ y: number;
960
+ width: number;
961
+ height: number;
962
+ };
963
+ orientation: "portrait" | "landscape";
964
+ }>;
965
+ requiredElementIds: z.ZodArray<z.ZodString, "many">;
966
+ constraints: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
967
+ type: z.ZodLiteral<"textFits">;
968
+ elementId: z.ZodString;
969
+ id: z.ZodString;
970
+ tolerance: z.ZodDefault<z.ZodNumber>;
971
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
972
+ }, "strict", z.ZodTypeAny, {
973
+ type: "textFits";
974
+ elementId: string;
975
+ id: string;
976
+ tolerance: number;
977
+ pixelAware?: boolean | undefined;
978
+ }, {
979
+ type: "textFits";
980
+ elementId: string;
981
+ id: string;
982
+ tolerance?: number | undefined;
983
+ pixelAware?: boolean | undefined;
984
+ }>, z.ZodObject<{
985
+ type: z.ZodLiteral<"rect">;
986
+ elementId: z.ZodString;
987
+ target: z.ZodObject<{
988
+ x: z.ZodNumber;
989
+ y: z.ZodNumber;
990
+ width: z.ZodNumber;
991
+ height: z.ZodNumber;
992
+ }, "strict", z.ZodTypeAny, {
993
+ x: number;
994
+ y: number;
995
+ width: number;
996
+ height: number;
997
+ }, {
998
+ x: number;
999
+ y: number;
1000
+ width: number;
1001
+ height: number;
1002
+ }>;
1003
+ id: z.ZodString;
1004
+ tolerance: z.ZodDefault<z.ZodNumber>;
1005
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
1006
+ }, "strict", z.ZodTypeAny, {
1007
+ type: "rect";
1008
+ elementId: string;
1009
+ id: string;
1010
+ tolerance: number;
1011
+ target: {
1012
+ x: number;
1013
+ y: number;
1014
+ width: number;
1015
+ height: number;
1016
+ };
1017
+ pixelAware?: boolean | undefined;
1018
+ }, {
1019
+ type: "rect";
1020
+ elementId: string;
1021
+ id: string;
1022
+ target: {
1023
+ x: number;
1024
+ y: number;
1025
+ width: number;
1026
+ height: number;
1027
+ };
1028
+ tolerance?: number | undefined;
1029
+ pixelAware?: boolean | undefined;
1030
+ }>, z.ZodObject<{
1031
+ type: z.ZodLiteral<"minTouchTarget">;
1032
+ elementId: z.ZodString;
1033
+ width: z.ZodDefault<z.ZodNumber>;
1034
+ height: z.ZodDefault<z.ZodNumber>;
1035
+ id: z.ZodString;
1036
+ tolerance: z.ZodDefault<z.ZodNumber>;
1037
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
1038
+ }, "strict", z.ZodTypeAny, {
1039
+ type: "minTouchTarget";
1040
+ width: number;
1041
+ height: number;
1042
+ elementId: string;
1043
+ id: string;
1044
+ tolerance: number;
1045
+ pixelAware?: boolean | undefined;
1046
+ }, {
1047
+ type: "minTouchTarget";
1048
+ elementId: string;
1049
+ id: string;
1050
+ width?: number | undefined;
1051
+ height?: number | undefined;
1052
+ tolerance?: number | undefined;
1053
+ pixelAware?: boolean | undefined;
1054
+ }>, z.ZodObject<{
1055
+ type: z.ZodLiteral<"align">;
1056
+ elementIds: z.ZodArray<z.ZodString, "many">;
1057
+ axis: z.ZodEnum<["x", "y"]>;
1058
+ edge: z.ZodEnum<["start", "center", "end"]>;
1059
+ id: z.ZodString;
1060
+ tolerance: z.ZodDefault<z.ZodNumber>;
1061
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
1062
+ }, "strict", z.ZodTypeAny, {
1063
+ type: "align";
1064
+ elementIds: string[];
1065
+ id: string;
1066
+ tolerance: number;
1067
+ axis: "x" | "y";
1068
+ edge: "start" | "center" | "end";
1069
+ pixelAware?: boolean | undefined;
1070
+ }, {
1071
+ type: "align";
1072
+ elementIds: string[];
1073
+ id: string;
1074
+ axis: "x" | "y";
1075
+ edge: "start" | "center" | "end";
1076
+ tolerance?: number | undefined;
1077
+ pixelAware?: boolean | undefined;
1078
+ }>, z.ZodObject<{
1079
+ type: z.ZodLiteral<"gap">;
1080
+ first: z.ZodString;
1081
+ second: z.ZodString;
1082
+ axis: z.ZodEnum<["x", "y"]>;
1083
+ value: z.ZodNumber;
1084
+ id: z.ZodString;
1085
+ tolerance: z.ZodDefault<z.ZodNumber>;
1086
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
1087
+ }, "strict", z.ZodTypeAny, {
1088
+ value: number;
1089
+ type: "gap";
1090
+ id: string;
1091
+ tolerance: number;
1092
+ axis: "x" | "y";
1093
+ first: string;
1094
+ second: string;
1095
+ pixelAware?: boolean | undefined;
1096
+ }, {
1097
+ value: number;
1098
+ type: "gap";
1099
+ id: string;
1100
+ axis: "x" | "y";
1101
+ first: string;
1102
+ second: string;
1103
+ tolerance?: number | undefined;
1104
+ pixelAware?: boolean | undefined;
1105
+ }>, z.ZodObject<{
1106
+ type: z.ZodLiteral<"insideSafeArea">;
1107
+ elementId: z.ZodString;
1108
+ id: z.ZodString;
1109
+ tolerance: z.ZodDefault<z.ZodNumber>;
1110
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
1111
+ }, "strict", z.ZodTypeAny, {
1112
+ type: "insideSafeArea";
1113
+ elementId: string;
1114
+ id: string;
1115
+ tolerance: number;
1116
+ pixelAware?: boolean | undefined;
1117
+ }, {
1118
+ type: "insideSafeArea";
1119
+ elementId: string;
1120
+ id: string;
1121
+ tolerance?: number | undefined;
1122
+ pixelAware?: boolean | undefined;
1123
+ }>, z.ZodObject<{
1124
+ type: z.ZodLiteral<"disjoint">;
1125
+ first: z.ZodString;
1126
+ second: z.ZodString;
1127
+ id: z.ZodString;
1128
+ tolerance: z.ZodDefault<z.ZodNumber>;
1129
+ pixelAware: z.ZodOptional<z.ZodBoolean>;
1130
+ }, "strict", z.ZodTypeAny, {
1131
+ type: "disjoint";
1132
+ id: string;
1133
+ tolerance: number;
1134
+ first: string;
1135
+ second: string;
1136
+ pixelAware?: boolean | undefined;
1137
+ }, {
1138
+ type: "disjoint";
1139
+ id: string;
1140
+ first: string;
1141
+ second: string;
1142
+ tolerance?: number | undefined;
1143
+ pixelAware?: boolean | undefined;
1144
+ }>]>, "many">;
1145
+ }, "strict", z.ZodTypeAny, {
1146
+ schemaVersion: 1;
1147
+ scenarioId: string;
1148
+ profile: {
1149
+ window: {
1150
+ width: number;
1151
+ height: number;
1152
+ };
1153
+ pixelRatio: number;
1154
+ fontScale: number;
1155
+ insets: {
1156
+ top: number;
1157
+ right: number;
1158
+ bottom: number;
1159
+ left: number;
1160
+ };
1161
+ root: {
1162
+ x: number;
1163
+ y: number;
1164
+ width: number;
1165
+ height: number;
1166
+ };
1167
+ orientation: "portrait" | "landscape";
1168
+ };
1169
+ requiredElementIds: string[];
1170
+ constraints: ({
1171
+ type: "textFits";
1172
+ elementId: string;
1173
+ id: string;
1174
+ tolerance: number;
1175
+ pixelAware?: boolean | undefined;
1176
+ } | {
1177
+ type: "rect";
1178
+ elementId: string;
1179
+ id: string;
1180
+ tolerance: number;
1181
+ target: {
1182
+ x: number;
1183
+ y: number;
1184
+ width: number;
1185
+ height: number;
1186
+ };
1187
+ pixelAware?: boolean | undefined;
1188
+ } | {
1189
+ type: "minTouchTarget";
1190
+ width: number;
1191
+ height: number;
1192
+ elementId: string;
1193
+ id: string;
1194
+ tolerance: number;
1195
+ pixelAware?: boolean | undefined;
1196
+ } | {
1197
+ type: "align";
1198
+ elementIds: string[];
1199
+ id: string;
1200
+ tolerance: number;
1201
+ axis: "x" | "y";
1202
+ edge: "start" | "center" | "end";
1203
+ pixelAware?: boolean | undefined;
1204
+ } | {
1205
+ value: number;
1206
+ type: "gap";
1207
+ id: string;
1208
+ tolerance: number;
1209
+ axis: "x" | "y";
1210
+ first: string;
1211
+ second: string;
1212
+ pixelAware?: boolean | undefined;
1213
+ } | {
1214
+ type: "insideSafeArea";
1215
+ elementId: string;
1216
+ id: string;
1217
+ tolerance: number;
1218
+ pixelAware?: boolean | undefined;
1219
+ } | {
1220
+ type: "disjoint";
1221
+ id: string;
1222
+ tolerance: number;
1223
+ first: string;
1224
+ second: string;
1225
+ pixelAware?: boolean | undefined;
1226
+ })[];
1227
+ }, {
1228
+ schemaVersion: 1;
1229
+ scenarioId: string;
1230
+ profile: {
1231
+ window: {
1232
+ width: number;
1233
+ height: number;
1234
+ };
1235
+ pixelRatio: number;
1236
+ fontScale: number;
1237
+ insets: {
1238
+ top: number;
1239
+ right: number;
1240
+ bottom: number;
1241
+ left: number;
1242
+ };
1243
+ root: {
1244
+ x: number;
1245
+ y: number;
1246
+ width: number;
1247
+ height: number;
1248
+ };
1249
+ orientation: "portrait" | "landscape";
1250
+ };
1251
+ requiredElementIds: string[];
1252
+ constraints: ({
1253
+ type: "textFits";
1254
+ elementId: string;
1255
+ id: string;
1256
+ tolerance?: number | undefined;
1257
+ pixelAware?: boolean | undefined;
1258
+ } | {
1259
+ type: "rect";
1260
+ elementId: string;
1261
+ id: string;
1262
+ target: {
1263
+ x: number;
1264
+ y: number;
1265
+ width: number;
1266
+ height: number;
1267
+ };
1268
+ tolerance?: number | undefined;
1269
+ pixelAware?: boolean | undefined;
1270
+ } | {
1271
+ type: "minTouchTarget";
1272
+ elementId: string;
1273
+ id: string;
1274
+ width?: number | undefined;
1275
+ height?: number | undefined;
1276
+ tolerance?: number | undefined;
1277
+ pixelAware?: boolean | undefined;
1278
+ } | {
1279
+ type: "align";
1280
+ elementIds: string[];
1281
+ id: string;
1282
+ axis: "x" | "y";
1283
+ edge: "start" | "center" | "end";
1284
+ tolerance?: number | undefined;
1285
+ pixelAware?: boolean | undefined;
1286
+ } | {
1287
+ value: number;
1288
+ type: "gap";
1289
+ id: string;
1290
+ axis: "x" | "y";
1291
+ first: string;
1292
+ second: string;
1293
+ tolerance?: number | undefined;
1294
+ pixelAware?: boolean | undefined;
1295
+ } | {
1296
+ type: "insideSafeArea";
1297
+ elementId: string;
1298
+ id: string;
1299
+ tolerance?: number | undefined;
1300
+ pixelAware?: boolean | undefined;
1301
+ } | {
1302
+ type: "disjoint";
1303
+ id: string;
1304
+ first: string;
1305
+ second: string;
1306
+ tolerance?: number | undefined;
1307
+ pixelAware?: boolean | undefined;
1308
+ })[];
1309
+ }>, {
1310
+ schemaVersion: 1;
1311
+ scenarioId: string;
1312
+ profile: {
1313
+ window: {
1314
+ width: number;
1315
+ height: number;
1316
+ };
1317
+ pixelRatio: number;
1318
+ fontScale: number;
1319
+ insets: {
1320
+ top: number;
1321
+ right: number;
1322
+ bottom: number;
1323
+ left: number;
1324
+ };
1325
+ root: {
1326
+ x: number;
1327
+ y: number;
1328
+ width: number;
1329
+ height: number;
1330
+ };
1331
+ orientation: "portrait" | "landscape";
1332
+ };
1333
+ requiredElementIds: string[];
1334
+ constraints: ({
1335
+ type: "textFits";
1336
+ elementId: string;
1337
+ id: string;
1338
+ tolerance: number;
1339
+ pixelAware?: boolean | undefined;
1340
+ } | {
1341
+ type: "rect";
1342
+ elementId: string;
1343
+ id: string;
1344
+ tolerance: number;
1345
+ target: {
1346
+ x: number;
1347
+ y: number;
1348
+ width: number;
1349
+ height: number;
1350
+ };
1351
+ pixelAware?: boolean | undefined;
1352
+ } | {
1353
+ type: "minTouchTarget";
1354
+ width: number;
1355
+ height: number;
1356
+ elementId: string;
1357
+ id: string;
1358
+ tolerance: number;
1359
+ pixelAware?: boolean | undefined;
1360
+ } | {
1361
+ type: "align";
1362
+ elementIds: string[];
1363
+ id: string;
1364
+ tolerance: number;
1365
+ axis: "x" | "y";
1366
+ edge: "start" | "center" | "end";
1367
+ pixelAware?: boolean | undefined;
1368
+ } | {
1369
+ value: number;
1370
+ type: "gap";
1371
+ id: string;
1372
+ tolerance: number;
1373
+ axis: "x" | "y";
1374
+ first: string;
1375
+ second: string;
1376
+ pixelAware?: boolean | undefined;
1377
+ } | {
1378
+ type: "insideSafeArea";
1379
+ elementId: string;
1380
+ id: string;
1381
+ tolerance: number;
1382
+ pixelAware?: boolean | undefined;
1383
+ } | {
1384
+ type: "disjoint";
1385
+ id: string;
1386
+ tolerance: number;
1387
+ first: string;
1388
+ second: string;
1389
+ pixelAware?: boolean | undefined;
1390
+ })[];
1391
+ }, {
1392
+ schemaVersion: 1;
1393
+ scenarioId: string;
1394
+ profile: {
1395
+ window: {
1396
+ width: number;
1397
+ height: number;
1398
+ };
1399
+ pixelRatio: number;
1400
+ fontScale: number;
1401
+ insets: {
1402
+ top: number;
1403
+ right: number;
1404
+ bottom: number;
1405
+ left: number;
1406
+ };
1407
+ root: {
1408
+ x: number;
1409
+ y: number;
1410
+ width: number;
1411
+ height: number;
1412
+ };
1413
+ orientation: "portrait" | "landscape";
1414
+ };
1415
+ requiredElementIds: string[];
1416
+ constraints: ({
1417
+ type: "textFits";
1418
+ elementId: string;
1419
+ id: string;
1420
+ tolerance?: number | undefined;
1421
+ pixelAware?: boolean | undefined;
1422
+ } | {
1423
+ type: "rect";
1424
+ elementId: string;
1425
+ id: string;
1426
+ target: {
1427
+ x: number;
1428
+ y: number;
1429
+ width: number;
1430
+ height: number;
1431
+ };
1432
+ tolerance?: number | undefined;
1433
+ pixelAware?: boolean | undefined;
1434
+ } | {
1435
+ type: "minTouchTarget";
1436
+ elementId: string;
1437
+ id: string;
1438
+ width?: number | undefined;
1439
+ height?: number | undefined;
1440
+ tolerance?: number | undefined;
1441
+ pixelAware?: boolean | undefined;
1442
+ } | {
1443
+ type: "align";
1444
+ elementIds: string[];
1445
+ id: string;
1446
+ axis: "x" | "y";
1447
+ edge: "start" | "center" | "end";
1448
+ tolerance?: number | undefined;
1449
+ pixelAware?: boolean | undefined;
1450
+ } | {
1451
+ value: number;
1452
+ type: "gap";
1453
+ id: string;
1454
+ axis: "x" | "y";
1455
+ first: string;
1456
+ second: string;
1457
+ tolerance?: number | undefined;
1458
+ pixelAware?: boolean | undefined;
1459
+ } | {
1460
+ type: "insideSafeArea";
1461
+ elementId: string;
1462
+ id: string;
1463
+ tolerance?: number | undefined;
1464
+ pixelAware?: boolean | undefined;
1465
+ } | {
1466
+ type: "disjoint";
1467
+ id: string;
1468
+ first: string;
1469
+ second: string;
1470
+ tolerance?: number | undefined;
1471
+ pixelAware?: boolean | undefined;
1472
+ })[];
1473
+ }>;
1474
+ reviewRequired: z.ZodLiteral<true>;
1475
+ source: z.ZodEnum<["figma-auto-layout", "reference-annotations"]>;
1476
+ notes: z.ZodArray<z.ZodString, "many">;
1477
+ }, "strict", z.ZodTypeAny, {
1478
+ spec: {
1479
+ schemaVersion: 1;
1480
+ scenarioId: string;
1481
+ profile: {
1482
+ window: {
1483
+ width: number;
1484
+ height: number;
1485
+ };
1486
+ pixelRatio: number;
1487
+ fontScale: number;
1488
+ insets: {
1489
+ top: number;
1490
+ right: number;
1491
+ bottom: number;
1492
+ left: number;
1493
+ };
1494
+ root: {
1495
+ x: number;
1496
+ y: number;
1497
+ width: number;
1498
+ height: number;
1499
+ };
1500
+ orientation: "portrait" | "landscape";
1501
+ };
1502
+ requiredElementIds: string[];
1503
+ constraints: ({
1504
+ type: "textFits";
1505
+ elementId: string;
1506
+ id: string;
1507
+ tolerance: number;
1508
+ pixelAware?: boolean | undefined;
1509
+ } | {
1510
+ type: "rect";
1511
+ elementId: string;
1512
+ id: string;
1513
+ tolerance: number;
1514
+ target: {
1515
+ x: number;
1516
+ y: number;
1517
+ width: number;
1518
+ height: number;
1519
+ };
1520
+ pixelAware?: boolean | undefined;
1521
+ } | {
1522
+ type: "minTouchTarget";
1523
+ width: number;
1524
+ height: number;
1525
+ elementId: string;
1526
+ id: string;
1527
+ tolerance: number;
1528
+ pixelAware?: boolean | undefined;
1529
+ } | {
1530
+ type: "align";
1531
+ elementIds: string[];
1532
+ id: string;
1533
+ tolerance: number;
1534
+ axis: "x" | "y";
1535
+ edge: "start" | "center" | "end";
1536
+ pixelAware?: boolean | undefined;
1537
+ } | {
1538
+ value: number;
1539
+ type: "gap";
1540
+ id: string;
1541
+ tolerance: number;
1542
+ axis: "x" | "y";
1543
+ first: string;
1544
+ second: string;
1545
+ pixelAware?: boolean | undefined;
1546
+ } | {
1547
+ type: "insideSafeArea";
1548
+ elementId: string;
1549
+ id: string;
1550
+ tolerance: number;
1551
+ pixelAware?: boolean | undefined;
1552
+ } | {
1553
+ type: "disjoint";
1554
+ id: string;
1555
+ tolerance: number;
1556
+ first: string;
1557
+ second: string;
1558
+ pixelAware?: boolean | undefined;
1559
+ })[];
1560
+ };
1561
+ reviewRequired: true;
1562
+ source: "figma-auto-layout" | "reference-annotations";
1563
+ notes: string[];
1564
+ }, {
1565
+ spec: {
1566
+ schemaVersion: 1;
1567
+ scenarioId: string;
1568
+ profile: {
1569
+ window: {
1570
+ width: number;
1571
+ height: number;
1572
+ };
1573
+ pixelRatio: number;
1574
+ fontScale: number;
1575
+ insets: {
1576
+ top: number;
1577
+ right: number;
1578
+ bottom: number;
1579
+ left: number;
1580
+ };
1581
+ root: {
1582
+ x: number;
1583
+ y: number;
1584
+ width: number;
1585
+ height: number;
1586
+ };
1587
+ orientation: "portrait" | "landscape";
1588
+ };
1589
+ requiredElementIds: string[];
1590
+ constraints: ({
1591
+ type: "textFits";
1592
+ elementId: string;
1593
+ id: string;
1594
+ tolerance?: number | undefined;
1595
+ pixelAware?: boolean | undefined;
1596
+ } | {
1597
+ type: "rect";
1598
+ elementId: string;
1599
+ id: string;
1600
+ target: {
1601
+ x: number;
1602
+ y: number;
1603
+ width: number;
1604
+ height: number;
1605
+ };
1606
+ tolerance?: number | undefined;
1607
+ pixelAware?: boolean | undefined;
1608
+ } | {
1609
+ type: "minTouchTarget";
1610
+ elementId: string;
1611
+ id: string;
1612
+ width?: number | undefined;
1613
+ height?: number | undefined;
1614
+ tolerance?: number | undefined;
1615
+ pixelAware?: boolean | undefined;
1616
+ } | {
1617
+ type: "align";
1618
+ elementIds: string[];
1619
+ id: string;
1620
+ axis: "x" | "y";
1621
+ edge: "start" | "center" | "end";
1622
+ tolerance?: number | undefined;
1623
+ pixelAware?: boolean | undefined;
1624
+ } | {
1625
+ value: number;
1626
+ type: "gap";
1627
+ id: string;
1628
+ axis: "x" | "y";
1629
+ first: string;
1630
+ second: string;
1631
+ tolerance?: number | undefined;
1632
+ pixelAware?: boolean | undefined;
1633
+ } | {
1634
+ type: "insideSafeArea";
1635
+ elementId: string;
1636
+ id: string;
1637
+ tolerance?: number | undefined;
1638
+ pixelAware?: boolean | undefined;
1639
+ } | {
1640
+ type: "disjoint";
1641
+ id: string;
1642
+ first: string;
1643
+ second: string;
1644
+ tolerance?: number | undefined;
1645
+ pixelAware?: boolean | undefined;
1646
+ })[];
1647
+ };
1648
+ reviewRequired: true;
1649
+ source: "figma-auto-layout" | "reference-annotations";
1650
+ notes: string[];
1651
+ }>;
1652
+ export type DesignIntentResult = z.infer<typeof DesignIntentResultSchema>;