@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,3395 @@
1
+ import { z } from 'zod';
2
+ /** Browser trials across explicit device profiles; native acceptance remains separate. */
3
+ export declare const SuggestionProfileSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ profile: z.ZodObject<{
6
+ window: z.ZodObject<{
7
+ width: z.ZodNumber;
8
+ height: z.ZodNumber;
9
+ }, "strict", z.ZodTypeAny, {
10
+ width: number;
11
+ height: number;
12
+ }, {
13
+ width: number;
14
+ height: number;
15
+ }>;
16
+ pixelRatio: z.ZodNumber;
17
+ fontScale: z.ZodNumber;
18
+ insets: z.ZodObject<{
19
+ top: z.ZodNumber;
20
+ right: z.ZodNumber;
21
+ bottom: z.ZodNumber;
22
+ left: z.ZodNumber;
23
+ }, "strict", z.ZodTypeAny, {
24
+ top: number;
25
+ right: number;
26
+ bottom: number;
27
+ left: number;
28
+ }, {
29
+ top: number;
30
+ right: number;
31
+ bottom: number;
32
+ left: number;
33
+ }>;
34
+ root: z.ZodObject<{
35
+ x: z.ZodNumber;
36
+ y: z.ZodNumber;
37
+ width: z.ZodNumber;
38
+ height: z.ZodNumber;
39
+ }, "strict", z.ZodTypeAny, {
40
+ x: number;
41
+ y: number;
42
+ width: number;
43
+ height: number;
44
+ }, {
45
+ x: number;
46
+ y: number;
47
+ width: number;
48
+ height: number;
49
+ }>;
50
+ orientation: z.ZodEnum<["portrait", "landscape"]>;
51
+ }, "strict", z.ZodTypeAny, {
52
+ window: {
53
+ width: number;
54
+ height: number;
55
+ };
56
+ pixelRatio: number;
57
+ fontScale: number;
58
+ insets: {
59
+ top: number;
60
+ right: number;
61
+ bottom: number;
62
+ left: number;
63
+ };
64
+ root: {
65
+ x: number;
66
+ y: number;
67
+ width: number;
68
+ height: number;
69
+ };
70
+ orientation: "portrait" | "landscape";
71
+ }, {
72
+ window: {
73
+ width: number;
74
+ height: number;
75
+ };
76
+ pixelRatio: number;
77
+ fontScale: number;
78
+ insets: {
79
+ top: number;
80
+ right: number;
81
+ bottom: number;
82
+ left: number;
83
+ };
84
+ root: {
85
+ x: number;
86
+ y: number;
87
+ width: number;
88
+ height: number;
89
+ };
90
+ orientation: "portrait" | "landscape";
91
+ }>;
92
+ script: z.ZodOptional<z.ZodObject<{
93
+ scenarioId: z.ZodString;
94
+ reset: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
95
+ type: z.ZodLiteral<"navigate">;
96
+ url: z.ZodString;
97
+ }, "strip", z.ZodTypeAny, {
98
+ type: "navigate";
99
+ url: string;
100
+ }, {
101
+ type: "navigate";
102
+ url: string;
103
+ }>, z.ZodObject<{
104
+ type: z.ZodLiteral<"tap">;
105
+ elementId: z.ZodString;
106
+ }, "strip", z.ZodTypeAny, {
107
+ type: "tap";
108
+ elementId: string;
109
+ }, {
110
+ type: "tap";
111
+ elementId: string;
112
+ }>, z.ZodObject<{
113
+ type: z.ZodLiteral<"press">;
114
+ elementId: z.ZodString;
115
+ phase: z.ZodEnum<["down", "up"]>;
116
+ }, "strip", z.ZodTypeAny, {
117
+ type: "press";
118
+ elementId: string;
119
+ phase: "down" | "up";
120
+ }, {
121
+ type: "press";
122
+ elementId: string;
123
+ phase: "down" | "up";
124
+ }>, z.ZodObject<{
125
+ type: z.ZodLiteral<"input">;
126
+ elementId: z.ZodString;
127
+ text: z.ZodString;
128
+ mode: z.ZodDefault<z.ZodEnum<["replace", "append"]>>;
129
+ }, "strip", z.ZodTypeAny, {
130
+ type: "input";
131
+ elementId: string;
132
+ text: string;
133
+ mode: "replace" | "append";
134
+ }, {
135
+ type: "input";
136
+ elementId: string;
137
+ text: string;
138
+ mode?: "replace" | "append" | undefined;
139
+ }>, z.ZodObject<{
140
+ type: z.ZodLiteral<"swipe">;
141
+ elementId: z.ZodString;
142
+ direction: z.ZodEnum<["UP", "DOWN", "LEFT", "RIGHT"]>;
143
+ }, "strip", z.ZodTypeAny, {
144
+ type: "swipe";
145
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
146
+ elementId: string;
147
+ }, {
148
+ type: "swipe";
149
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
150
+ elementId: string;
151
+ }>, z.ZodObject<{
152
+ type: z.ZodLiteral<"scroll">;
153
+ elementId: z.ZodString;
154
+ x: z.ZodNumber;
155
+ y: z.ZodNumber;
156
+ }, "strip", z.ZodTypeAny, {
157
+ type: "scroll";
158
+ x: number;
159
+ y: number;
160
+ elementId: string;
161
+ }, {
162
+ type: "scroll";
163
+ x: number;
164
+ y: number;
165
+ elementId: string;
166
+ }>, z.ZodObject<{
167
+ type: z.ZodLiteral<"keyboard">;
168
+ visible: z.ZodBoolean;
169
+ }, "strip", z.ZodTypeAny, {
170
+ type: "keyboard";
171
+ visible: boolean;
172
+ }, {
173
+ type: "keyboard";
174
+ visible: boolean;
175
+ }>, z.ZodObject<{
176
+ type: z.ZodLiteral<"wait">;
177
+ elementId: z.ZodString;
178
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
179
+ }, "strip", z.ZodTypeAny, {
180
+ type: "wait";
181
+ elementId: string;
182
+ timeoutMs: number;
183
+ }, {
184
+ type: "wait";
185
+ elementId: string;
186
+ timeoutMs?: number | undefined;
187
+ }>, z.ZodObject<{
188
+ type: z.ZodLiteral<"hook">;
189
+ name: z.ZodString;
190
+ value: z.ZodOptional<z.ZodUnknown>;
191
+ }, "strip", z.ZodTypeAny, {
192
+ type: "hook";
193
+ name: string;
194
+ value?: unknown;
195
+ }, {
196
+ type: "hook";
197
+ name: string;
198
+ value?: unknown;
199
+ }>]>, "many">;
200
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
201
+ type: z.ZodLiteral<"navigate">;
202
+ url: z.ZodString;
203
+ }, "strip", z.ZodTypeAny, {
204
+ type: "navigate";
205
+ url: string;
206
+ }, {
207
+ type: "navigate";
208
+ url: string;
209
+ }>, z.ZodObject<{
210
+ type: z.ZodLiteral<"tap">;
211
+ elementId: z.ZodString;
212
+ }, "strip", z.ZodTypeAny, {
213
+ type: "tap";
214
+ elementId: string;
215
+ }, {
216
+ type: "tap";
217
+ elementId: string;
218
+ }>, z.ZodObject<{
219
+ type: z.ZodLiteral<"press">;
220
+ elementId: z.ZodString;
221
+ phase: z.ZodEnum<["down", "up"]>;
222
+ }, "strip", z.ZodTypeAny, {
223
+ type: "press";
224
+ elementId: string;
225
+ phase: "down" | "up";
226
+ }, {
227
+ type: "press";
228
+ elementId: string;
229
+ phase: "down" | "up";
230
+ }>, z.ZodObject<{
231
+ type: z.ZodLiteral<"input">;
232
+ elementId: z.ZodString;
233
+ text: z.ZodString;
234
+ mode: z.ZodDefault<z.ZodEnum<["replace", "append"]>>;
235
+ }, "strip", z.ZodTypeAny, {
236
+ type: "input";
237
+ elementId: string;
238
+ text: string;
239
+ mode: "replace" | "append";
240
+ }, {
241
+ type: "input";
242
+ elementId: string;
243
+ text: string;
244
+ mode?: "replace" | "append" | undefined;
245
+ }>, z.ZodObject<{
246
+ type: z.ZodLiteral<"swipe">;
247
+ elementId: z.ZodString;
248
+ direction: z.ZodEnum<["UP", "DOWN", "LEFT", "RIGHT"]>;
249
+ }, "strip", z.ZodTypeAny, {
250
+ type: "swipe";
251
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
252
+ elementId: string;
253
+ }, {
254
+ type: "swipe";
255
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
256
+ elementId: string;
257
+ }>, z.ZodObject<{
258
+ type: z.ZodLiteral<"scroll">;
259
+ elementId: z.ZodString;
260
+ x: z.ZodNumber;
261
+ y: z.ZodNumber;
262
+ }, "strip", z.ZodTypeAny, {
263
+ type: "scroll";
264
+ x: number;
265
+ y: number;
266
+ elementId: string;
267
+ }, {
268
+ type: "scroll";
269
+ x: number;
270
+ y: number;
271
+ elementId: string;
272
+ }>, z.ZodObject<{
273
+ type: z.ZodLiteral<"keyboard">;
274
+ visible: z.ZodBoolean;
275
+ }, "strip", z.ZodTypeAny, {
276
+ type: "keyboard";
277
+ visible: boolean;
278
+ }, {
279
+ type: "keyboard";
280
+ visible: boolean;
281
+ }>, z.ZodObject<{
282
+ type: z.ZodLiteral<"wait">;
283
+ elementId: z.ZodString;
284
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
285
+ }, "strip", z.ZodTypeAny, {
286
+ type: "wait";
287
+ elementId: string;
288
+ timeoutMs: number;
289
+ }, {
290
+ type: "wait";
291
+ elementId: string;
292
+ timeoutMs?: number | undefined;
293
+ }>, z.ZodObject<{
294
+ type: z.ZodLiteral<"hook">;
295
+ name: z.ZodString;
296
+ value: z.ZodOptional<z.ZodUnknown>;
297
+ }, "strip", z.ZodTypeAny, {
298
+ type: "hook";
299
+ name: string;
300
+ value?: unknown;
301
+ }, {
302
+ type: "hook";
303
+ name: string;
304
+ value?: unknown;
305
+ }>]>, "many">;
306
+ }, "strict", z.ZodTypeAny, {
307
+ scenarioId: string;
308
+ reset: ({
309
+ type: "navigate";
310
+ url: string;
311
+ } | {
312
+ type: "tap";
313
+ elementId: string;
314
+ } | {
315
+ type: "press";
316
+ elementId: string;
317
+ phase: "down" | "up";
318
+ } | {
319
+ type: "input";
320
+ elementId: string;
321
+ text: string;
322
+ mode: "replace" | "append";
323
+ } | {
324
+ type: "swipe";
325
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
326
+ elementId: string;
327
+ } | {
328
+ type: "scroll";
329
+ x: number;
330
+ y: number;
331
+ elementId: string;
332
+ } | {
333
+ type: "keyboard";
334
+ visible: boolean;
335
+ } | {
336
+ type: "wait";
337
+ elementId: string;
338
+ timeoutMs: number;
339
+ } | {
340
+ type: "hook";
341
+ name: string;
342
+ value?: unknown;
343
+ })[];
344
+ actions: ({
345
+ type: "navigate";
346
+ url: string;
347
+ } | {
348
+ type: "tap";
349
+ elementId: string;
350
+ } | {
351
+ type: "press";
352
+ elementId: string;
353
+ phase: "down" | "up";
354
+ } | {
355
+ type: "input";
356
+ elementId: string;
357
+ text: string;
358
+ mode: "replace" | "append";
359
+ } | {
360
+ type: "swipe";
361
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
362
+ elementId: string;
363
+ } | {
364
+ type: "scroll";
365
+ x: number;
366
+ y: number;
367
+ elementId: string;
368
+ } | {
369
+ type: "keyboard";
370
+ visible: boolean;
371
+ } | {
372
+ type: "wait";
373
+ elementId: string;
374
+ timeoutMs: number;
375
+ } | {
376
+ type: "hook";
377
+ name: string;
378
+ value?: unknown;
379
+ })[];
380
+ }, {
381
+ scenarioId: string;
382
+ reset: ({
383
+ type: "navigate";
384
+ url: string;
385
+ } | {
386
+ type: "tap";
387
+ elementId: string;
388
+ } | {
389
+ type: "press";
390
+ elementId: string;
391
+ phase: "down" | "up";
392
+ } | {
393
+ type: "input";
394
+ elementId: string;
395
+ text: string;
396
+ mode?: "replace" | "append" | undefined;
397
+ } | {
398
+ type: "swipe";
399
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
400
+ elementId: string;
401
+ } | {
402
+ type: "scroll";
403
+ x: number;
404
+ y: number;
405
+ elementId: string;
406
+ } | {
407
+ type: "keyboard";
408
+ visible: boolean;
409
+ } | {
410
+ type: "wait";
411
+ elementId: string;
412
+ timeoutMs?: number | undefined;
413
+ } | {
414
+ type: "hook";
415
+ name: string;
416
+ value?: unknown;
417
+ })[];
418
+ actions: ({
419
+ type: "navigate";
420
+ url: string;
421
+ } | {
422
+ type: "tap";
423
+ elementId: string;
424
+ } | {
425
+ type: "press";
426
+ elementId: string;
427
+ phase: "down" | "up";
428
+ } | {
429
+ type: "input";
430
+ elementId: string;
431
+ text: string;
432
+ mode?: "replace" | "append" | undefined;
433
+ } | {
434
+ type: "swipe";
435
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
436
+ elementId: string;
437
+ } | {
438
+ type: "scroll";
439
+ x: number;
440
+ y: number;
441
+ elementId: string;
442
+ } | {
443
+ type: "keyboard";
444
+ visible: boolean;
445
+ } | {
446
+ type: "wait";
447
+ elementId: string;
448
+ timeoutMs?: number | undefined;
449
+ } | {
450
+ type: "hook";
451
+ name: string;
452
+ value?: unknown;
453
+ })[];
454
+ }>>;
455
+ }, "strict", z.ZodTypeAny, {
456
+ id: string;
457
+ profile: {
458
+ window: {
459
+ width: number;
460
+ height: number;
461
+ };
462
+ pixelRatio: number;
463
+ fontScale: number;
464
+ insets: {
465
+ top: number;
466
+ right: number;
467
+ bottom: number;
468
+ left: number;
469
+ };
470
+ root: {
471
+ x: number;
472
+ y: number;
473
+ width: number;
474
+ height: number;
475
+ };
476
+ orientation: "portrait" | "landscape";
477
+ };
478
+ script?: {
479
+ scenarioId: string;
480
+ reset: ({
481
+ type: "navigate";
482
+ url: string;
483
+ } | {
484
+ type: "tap";
485
+ elementId: string;
486
+ } | {
487
+ type: "press";
488
+ elementId: string;
489
+ phase: "down" | "up";
490
+ } | {
491
+ type: "input";
492
+ elementId: string;
493
+ text: string;
494
+ mode: "replace" | "append";
495
+ } | {
496
+ type: "swipe";
497
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
498
+ elementId: string;
499
+ } | {
500
+ type: "scroll";
501
+ x: number;
502
+ y: number;
503
+ elementId: string;
504
+ } | {
505
+ type: "keyboard";
506
+ visible: boolean;
507
+ } | {
508
+ type: "wait";
509
+ elementId: string;
510
+ timeoutMs: number;
511
+ } | {
512
+ type: "hook";
513
+ name: string;
514
+ value?: unknown;
515
+ })[];
516
+ actions: ({
517
+ type: "navigate";
518
+ url: string;
519
+ } | {
520
+ type: "tap";
521
+ elementId: string;
522
+ } | {
523
+ type: "press";
524
+ elementId: string;
525
+ phase: "down" | "up";
526
+ } | {
527
+ type: "input";
528
+ elementId: string;
529
+ text: string;
530
+ mode: "replace" | "append";
531
+ } | {
532
+ type: "swipe";
533
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
534
+ elementId: string;
535
+ } | {
536
+ type: "scroll";
537
+ x: number;
538
+ y: number;
539
+ elementId: string;
540
+ } | {
541
+ type: "keyboard";
542
+ visible: boolean;
543
+ } | {
544
+ type: "wait";
545
+ elementId: string;
546
+ timeoutMs: number;
547
+ } | {
548
+ type: "hook";
549
+ name: string;
550
+ value?: unknown;
551
+ })[];
552
+ } | undefined;
553
+ }, {
554
+ id: string;
555
+ profile: {
556
+ window: {
557
+ width: number;
558
+ height: number;
559
+ };
560
+ pixelRatio: number;
561
+ fontScale: number;
562
+ insets: {
563
+ top: number;
564
+ right: number;
565
+ bottom: number;
566
+ left: number;
567
+ };
568
+ root: {
569
+ x: number;
570
+ y: number;
571
+ width: number;
572
+ height: number;
573
+ };
574
+ orientation: "portrait" | "landscape";
575
+ };
576
+ script?: {
577
+ scenarioId: string;
578
+ reset: ({
579
+ type: "navigate";
580
+ url: string;
581
+ } | {
582
+ type: "tap";
583
+ elementId: string;
584
+ } | {
585
+ type: "press";
586
+ elementId: string;
587
+ phase: "down" | "up";
588
+ } | {
589
+ type: "input";
590
+ elementId: string;
591
+ text: string;
592
+ mode?: "replace" | "append" | undefined;
593
+ } | {
594
+ type: "swipe";
595
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
596
+ elementId: string;
597
+ } | {
598
+ type: "scroll";
599
+ x: number;
600
+ y: number;
601
+ elementId: string;
602
+ } | {
603
+ type: "keyboard";
604
+ visible: boolean;
605
+ } | {
606
+ type: "wait";
607
+ elementId: string;
608
+ timeoutMs?: number | undefined;
609
+ } | {
610
+ type: "hook";
611
+ name: string;
612
+ value?: unknown;
613
+ })[];
614
+ actions: ({
615
+ type: "navigate";
616
+ url: string;
617
+ } | {
618
+ type: "tap";
619
+ elementId: string;
620
+ } | {
621
+ type: "press";
622
+ elementId: string;
623
+ phase: "down" | "up";
624
+ } | {
625
+ type: "input";
626
+ elementId: string;
627
+ text: string;
628
+ mode?: "replace" | "append" | undefined;
629
+ } | {
630
+ type: "swipe";
631
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
632
+ elementId: string;
633
+ } | {
634
+ type: "scroll";
635
+ x: number;
636
+ y: number;
637
+ elementId: string;
638
+ } | {
639
+ type: "keyboard";
640
+ visible: boolean;
641
+ } | {
642
+ type: "wait";
643
+ elementId: string;
644
+ timeoutMs?: number | undefined;
645
+ } | {
646
+ type: "hook";
647
+ name: string;
648
+ value?: unknown;
649
+ })[];
650
+ } | undefined;
651
+ }>;
652
+ export type SuggestionProfile = z.infer<typeof SuggestionProfileSchema>;
653
+ export declare const SuggestionProfilesSchema: z.ZodEffects<z.ZodArray<z.ZodObject<{
654
+ id: z.ZodString;
655
+ profile: z.ZodObject<{
656
+ window: z.ZodObject<{
657
+ width: z.ZodNumber;
658
+ height: z.ZodNumber;
659
+ }, "strict", z.ZodTypeAny, {
660
+ width: number;
661
+ height: number;
662
+ }, {
663
+ width: number;
664
+ height: number;
665
+ }>;
666
+ pixelRatio: z.ZodNumber;
667
+ fontScale: z.ZodNumber;
668
+ insets: z.ZodObject<{
669
+ top: z.ZodNumber;
670
+ right: z.ZodNumber;
671
+ bottom: z.ZodNumber;
672
+ left: z.ZodNumber;
673
+ }, "strict", z.ZodTypeAny, {
674
+ top: number;
675
+ right: number;
676
+ bottom: number;
677
+ left: number;
678
+ }, {
679
+ top: number;
680
+ right: number;
681
+ bottom: number;
682
+ left: number;
683
+ }>;
684
+ root: z.ZodObject<{
685
+ x: z.ZodNumber;
686
+ y: z.ZodNumber;
687
+ width: z.ZodNumber;
688
+ height: z.ZodNumber;
689
+ }, "strict", z.ZodTypeAny, {
690
+ x: number;
691
+ y: number;
692
+ width: number;
693
+ height: number;
694
+ }, {
695
+ x: number;
696
+ y: number;
697
+ width: number;
698
+ height: number;
699
+ }>;
700
+ orientation: z.ZodEnum<["portrait", "landscape"]>;
701
+ }, "strict", z.ZodTypeAny, {
702
+ window: {
703
+ width: number;
704
+ height: number;
705
+ };
706
+ pixelRatio: number;
707
+ fontScale: number;
708
+ insets: {
709
+ top: number;
710
+ right: number;
711
+ bottom: number;
712
+ left: number;
713
+ };
714
+ root: {
715
+ x: number;
716
+ y: number;
717
+ width: number;
718
+ height: number;
719
+ };
720
+ orientation: "portrait" | "landscape";
721
+ }, {
722
+ window: {
723
+ width: number;
724
+ height: number;
725
+ };
726
+ pixelRatio: number;
727
+ fontScale: number;
728
+ insets: {
729
+ top: number;
730
+ right: number;
731
+ bottom: number;
732
+ left: number;
733
+ };
734
+ root: {
735
+ x: number;
736
+ y: number;
737
+ width: number;
738
+ height: number;
739
+ };
740
+ orientation: "portrait" | "landscape";
741
+ }>;
742
+ script: z.ZodOptional<z.ZodObject<{
743
+ scenarioId: z.ZodString;
744
+ reset: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
745
+ type: z.ZodLiteral<"navigate">;
746
+ url: z.ZodString;
747
+ }, "strip", z.ZodTypeAny, {
748
+ type: "navigate";
749
+ url: string;
750
+ }, {
751
+ type: "navigate";
752
+ url: string;
753
+ }>, z.ZodObject<{
754
+ type: z.ZodLiteral<"tap">;
755
+ elementId: z.ZodString;
756
+ }, "strip", z.ZodTypeAny, {
757
+ type: "tap";
758
+ elementId: string;
759
+ }, {
760
+ type: "tap";
761
+ elementId: string;
762
+ }>, z.ZodObject<{
763
+ type: z.ZodLiteral<"press">;
764
+ elementId: z.ZodString;
765
+ phase: z.ZodEnum<["down", "up"]>;
766
+ }, "strip", z.ZodTypeAny, {
767
+ type: "press";
768
+ elementId: string;
769
+ phase: "down" | "up";
770
+ }, {
771
+ type: "press";
772
+ elementId: string;
773
+ phase: "down" | "up";
774
+ }>, z.ZodObject<{
775
+ type: z.ZodLiteral<"input">;
776
+ elementId: z.ZodString;
777
+ text: z.ZodString;
778
+ mode: z.ZodDefault<z.ZodEnum<["replace", "append"]>>;
779
+ }, "strip", z.ZodTypeAny, {
780
+ type: "input";
781
+ elementId: string;
782
+ text: string;
783
+ mode: "replace" | "append";
784
+ }, {
785
+ type: "input";
786
+ elementId: string;
787
+ text: string;
788
+ mode?: "replace" | "append" | undefined;
789
+ }>, z.ZodObject<{
790
+ type: z.ZodLiteral<"swipe">;
791
+ elementId: z.ZodString;
792
+ direction: z.ZodEnum<["UP", "DOWN", "LEFT", "RIGHT"]>;
793
+ }, "strip", z.ZodTypeAny, {
794
+ type: "swipe";
795
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
796
+ elementId: string;
797
+ }, {
798
+ type: "swipe";
799
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
800
+ elementId: string;
801
+ }>, z.ZodObject<{
802
+ type: z.ZodLiteral<"scroll">;
803
+ elementId: z.ZodString;
804
+ x: z.ZodNumber;
805
+ y: z.ZodNumber;
806
+ }, "strip", z.ZodTypeAny, {
807
+ type: "scroll";
808
+ x: number;
809
+ y: number;
810
+ elementId: string;
811
+ }, {
812
+ type: "scroll";
813
+ x: number;
814
+ y: number;
815
+ elementId: string;
816
+ }>, z.ZodObject<{
817
+ type: z.ZodLiteral<"keyboard">;
818
+ visible: z.ZodBoolean;
819
+ }, "strip", z.ZodTypeAny, {
820
+ type: "keyboard";
821
+ visible: boolean;
822
+ }, {
823
+ type: "keyboard";
824
+ visible: boolean;
825
+ }>, z.ZodObject<{
826
+ type: z.ZodLiteral<"wait">;
827
+ elementId: z.ZodString;
828
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
829
+ }, "strip", z.ZodTypeAny, {
830
+ type: "wait";
831
+ elementId: string;
832
+ timeoutMs: number;
833
+ }, {
834
+ type: "wait";
835
+ elementId: string;
836
+ timeoutMs?: number | undefined;
837
+ }>, z.ZodObject<{
838
+ type: z.ZodLiteral<"hook">;
839
+ name: z.ZodString;
840
+ value: z.ZodOptional<z.ZodUnknown>;
841
+ }, "strip", z.ZodTypeAny, {
842
+ type: "hook";
843
+ name: string;
844
+ value?: unknown;
845
+ }, {
846
+ type: "hook";
847
+ name: string;
848
+ value?: unknown;
849
+ }>]>, "many">;
850
+ actions: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
851
+ type: z.ZodLiteral<"navigate">;
852
+ url: z.ZodString;
853
+ }, "strip", z.ZodTypeAny, {
854
+ type: "navigate";
855
+ url: string;
856
+ }, {
857
+ type: "navigate";
858
+ url: string;
859
+ }>, z.ZodObject<{
860
+ type: z.ZodLiteral<"tap">;
861
+ elementId: z.ZodString;
862
+ }, "strip", z.ZodTypeAny, {
863
+ type: "tap";
864
+ elementId: string;
865
+ }, {
866
+ type: "tap";
867
+ elementId: string;
868
+ }>, z.ZodObject<{
869
+ type: z.ZodLiteral<"press">;
870
+ elementId: z.ZodString;
871
+ phase: z.ZodEnum<["down", "up"]>;
872
+ }, "strip", z.ZodTypeAny, {
873
+ type: "press";
874
+ elementId: string;
875
+ phase: "down" | "up";
876
+ }, {
877
+ type: "press";
878
+ elementId: string;
879
+ phase: "down" | "up";
880
+ }>, z.ZodObject<{
881
+ type: z.ZodLiteral<"input">;
882
+ elementId: z.ZodString;
883
+ text: z.ZodString;
884
+ mode: z.ZodDefault<z.ZodEnum<["replace", "append"]>>;
885
+ }, "strip", z.ZodTypeAny, {
886
+ type: "input";
887
+ elementId: string;
888
+ text: string;
889
+ mode: "replace" | "append";
890
+ }, {
891
+ type: "input";
892
+ elementId: string;
893
+ text: string;
894
+ mode?: "replace" | "append" | undefined;
895
+ }>, z.ZodObject<{
896
+ type: z.ZodLiteral<"swipe">;
897
+ elementId: z.ZodString;
898
+ direction: z.ZodEnum<["UP", "DOWN", "LEFT", "RIGHT"]>;
899
+ }, "strip", z.ZodTypeAny, {
900
+ type: "swipe";
901
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
902
+ elementId: string;
903
+ }, {
904
+ type: "swipe";
905
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
906
+ elementId: string;
907
+ }>, z.ZodObject<{
908
+ type: z.ZodLiteral<"scroll">;
909
+ elementId: z.ZodString;
910
+ x: z.ZodNumber;
911
+ y: z.ZodNumber;
912
+ }, "strip", z.ZodTypeAny, {
913
+ type: "scroll";
914
+ x: number;
915
+ y: number;
916
+ elementId: string;
917
+ }, {
918
+ type: "scroll";
919
+ x: number;
920
+ y: number;
921
+ elementId: string;
922
+ }>, z.ZodObject<{
923
+ type: z.ZodLiteral<"keyboard">;
924
+ visible: z.ZodBoolean;
925
+ }, "strip", z.ZodTypeAny, {
926
+ type: "keyboard";
927
+ visible: boolean;
928
+ }, {
929
+ type: "keyboard";
930
+ visible: boolean;
931
+ }>, z.ZodObject<{
932
+ type: z.ZodLiteral<"wait">;
933
+ elementId: z.ZodString;
934
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
935
+ }, "strip", z.ZodTypeAny, {
936
+ type: "wait";
937
+ elementId: string;
938
+ timeoutMs: number;
939
+ }, {
940
+ type: "wait";
941
+ elementId: string;
942
+ timeoutMs?: number | undefined;
943
+ }>, z.ZodObject<{
944
+ type: z.ZodLiteral<"hook">;
945
+ name: z.ZodString;
946
+ value: z.ZodOptional<z.ZodUnknown>;
947
+ }, "strip", z.ZodTypeAny, {
948
+ type: "hook";
949
+ name: string;
950
+ value?: unknown;
951
+ }, {
952
+ type: "hook";
953
+ name: string;
954
+ value?: unknown;
955
+ }>]>, "many">;
956
+ }, "strict", z.ZodTypeAny, {
957
+ scenarioId: string;
958
+ reset: ({
959
+ type: "navigate";
960
+ url: string;
961
+ } | {
962
+ type: "tap";
963
+ elementId: string;
964
+ } | {
965
+ type: "press";
966
+ elementId: string;
967
+ phase: "down" | "up";
968
+ } | {
969
+ type: "input";
970
+ elementId: string;
971
+ text: string;
972
+ mode: "replace" | "append";
973
+ } | {
974
+ type: "swipe";
975
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
976
+ elementId: string;
977
+ } | {
978
+ type: "scroll";
979
+ x: number;
980
+ y: number;
981
+ elementId: string;
982
+ } | {
983
+ type: "keyboard";
984
+ visible: boolean;
985
+ } | {
986
+ type: "wait";
987
+ elementId: string;
988
+ timeoutMs: number;
989
+ } | {
990
+ type: "hook";
991
+ name: string;
992
+ value?: unknown;
993
+ })[];
994
+ actions: ({
995
+ type: "navigate";
996
+ url: string;
997
+ } | {
998
+ type: "tap";
999
+ elementId: string;
1000
+ } | {
1001
+ type: "press";
1002
+ elementId: string;
1003
+ phase: "down" | "up";
1004
+ } | {
1005
+ type: "input";
1006
+ elementId: string;
1007
+ text: string;
1008
+ mode: "replace" | "append";
1009
+ } | {
1010
+ type: "swipe";
1011
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1012
+ elementId: string;
1013
+ } | {
1014
+ type: "scroll";
1015
+ x: number;
1016
+ y: number;
1017
+ elementId: string;
1018
+ } | {
1019
+ type: "keyboard";
1020
+ visible: boolean;
1021
+ } | {
1022
+ type: "wait";
1023
+ elementId: string;
1024
+ timeoutMs: number;
1025
+ } | {
1026
+ type: "hook";
1027
+ name: string;
1028
+ value?: unknown;
1029
+ })[];
1030
+ }, {
1031
+ scenarioId: string;
1032
+ reset: ({
1033
+ type: "navigate";
1034
+ url: string;
1035
+ } | {
1036
+ type: "tap";
1037
+ elementId: string;
1038
+ } | {
1039
+ type: "press";
1040
+ elementId: string;
1041
+ phase: "down" | "up";
1042
+ } | {
1043
+ type: "input";
1044
+ elementId: string;
1045
+ text: string;
1046
+ mode?: "replace" | "append" | undefined;
1047
+ } | {
1048
+ type: "swipe";
1049
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1050
+ elementId: string;
1051
+ } | {
1052
+ type: "scroll";
1053
+ x: number;
1054
+ y: number;
1055
+ elementId: string;
1056
+ } | {
1057
+ type: "keyboard";
1058
+ visible: boolean;
1059
+ } | {
1060
+ type: "wait";
1061
+ elementId: string;
1062
+ timeoutMs?: number | undefined;
1063
+ } | {
1064
+ type: "hook";
1065
+ name: string;
1066
+ value?: unknown;
1067
+ })[];
1068
+ actions: ({
1069
+ type: "navigate";
1070
+ url: string;
1071
+ } | {
1072
+ type: "tap";
1073
+ elementId: string;
1074
+ } | {
1075
+ type: "press";
1076
+ elementId: string;
1077
+ phase: "down" | "up";
1078
+ } | {
1079
+ type: "input";
1080
+ elementId: string;
1081
+ text: string;
1082
+ mode?: "replace" | "append" | undefined;
1083
+ } | {
1084
+ type: "swipe";
1085
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1086
+ elementId: string;
1087
+ } | {
1088
+ type: "scroll";
1089
+ x: number;
1090
+ y: number;
1091
+ elementId: string;
1092
+ } | {
1093
+ type: "keyboard";
1094
+ visible: boolean;
1095
+ } | {
1096
+ type: "wait";
1097
+ elementId: string;
1098
+ timeoutMs?: number | undefined;
1099
+ } | {
1100
+ type: "hook";
1101
+ name: string;
1102
+ value?: unknown;
1103
+ })[];
1104
+ }>>;
1105
+ }, "strict", z.ZodTypeAny, {
1106
+ id: string;
1107
+ profile: {
1108
+ window: {
1109
+ width: number;
1110
+ height: number;
1111
+ };
1112
+ pixelRatio: number;
1113
+ fontScale: number;
1114
+ insets: {
1115
+ top: number;
1116
+ right: number;
1117
+ bottom: number;
1118
+ left: number;
1119
+ };
1120
+ root: {
1121
+ x: number;
1122
+ y: number;
1123
+ width: number;
1124
+ height: number;
1125
+ };
1126
+ orientation: "portrait" | "landscape";
1127
+ };
1128
+ script?: {
1129
+ scenarioId: string;
1130
+ reset: ({
1131
+ type: "navigate";
1132
+ url: string;
1133
+ } | {
1134
+ type: "tap";
1135
+ elementId: string;
1136
+ } | {
1137
+ type: "press";
1138
+ elementId: string;
1139
+ phase: "down" | "up";
1140
+ } | {
1141
+ type: "input";
1142
+ elementId: string;
1143
+ text: string;
1144
+ mode: "replace" | "append";
1145
+ } | {
1146
+ type: "swipe";
1147
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1148
+ elementId: string;
1149
+ } | {
1150
+ type: "scroll";
1151
+ x: number;
1152
+ y: number;
1153
+ elementId: string;
1154
+ } | {
1155
+ type: "keyboard";
1156
+ visible: boolean;
1157
+ } | {
1158
+ type: "wait";
1159
+ elementId: string;
1160
+ timeoutMs: number;
1161
+ } | {
1162
+ type: "hook";
1163
+ name: string;
1164
+ value?: unknown;
1165
+ })[];
1166
+ actions: ({
1167
+ type: "navigate";
1168
+ url: string;
1169
+ } | {
1170
+ type: "tap";
1171
+ elementId: string;
1172
+ } | {
1173
+ type: "press";
1174
+ elementId: string;
1175
+ phase: "down" | "up";
1176
+ } | {
1177
+ type: "input";
1178
+ elementId: string;
1179
+ text: string;
1180
+ mode: "replace" | "append";
1181
+ } | {
1182
+ type: "swipe";
1183
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1184
+ elementId: string;
1185
+ } | {
1186
+ type: "scroll";
1187
+ x: number;
1188
+ y: number;
1189
+ elementId: string;
1190
+ } | {
1191
+ type: "keyboard";
1192
+ visible: boolean;
1193
+ } | {
1194
+ type: "wait";
1195
+ elementId: string;
1196
+ timeoutMs: number;
1197
+ } | {
1198
+ type: "hook";
1199
+ name: string;
1200
+ value?: unknown;
1201
+ })[];
1202
+ } | undefined;
1203
+ }, {
1204
+ id: string;
1205
+ profile: {
1206
+ window: {
1207
+ width: number;
1208
+ height: number;
1209
+ };
1210
+ pixelRatio: number;
1211
+ fontScale: number;
1212
+ insets: {
1213
+ top: number;
1214
+ right: number;
1215
+ bottom: number;
1216
+ left: number;
1217
+ };
1218
+ root: {
1219
+ x: number;
1220
+ y: number;
1221
+ width: number;
1222
+ height: number;
1223
+ };
1224
+ orientation: "portrait" | "landscape";
1225
+ };
1226
+ script?: {
1227
+ scenarioId: string;
1228
+ reset: ({
1229
+ type: "navigate";
1230
+ url: string;
1231
+ } | {
1232
+ type: "tap";
1233
+ elementId: string;
1234
+ } | {
1235
+ type: "press";
1236
+ elementId: string;
1237
+ phase: "down" | "up";
1238
+ } | {
1239
+ type: "input";
1240
+ elementId: string;
1241
+ text: string;
1242
+ mode?: "replace" | "append" | undefined;
1243
+ } | {
1244
+ type: "swipe";
1245
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1246
+ elementId: string;
1247
+ } | {
1248
+ type: "scroll";
1249
+ x: number;
1250
+ y: number;
1251
+ elementId: string;
1252
+ } | {
1253
+ type: "keyboard";
1254
+ visible: boolean;
1255
+ } | {
1256
+ type: "wait";
1257
+ elementId: string;
1258
+ timeoutMs?: number | undefined;
1259
+ } | {
1260
+ type: "hook";
1261
+ name: string;
1262
+ value?: unknown;
1263
+ })[];
1264
+ actions: ({
1265
+ type: "navigate";
1266
+ url: string;
1267
+ } | {
1268
+ type: "tap";
1269
+ elementId: string;
1270
+ } | {
1271
+ type: "press";
1272
+ elementId: string;
1273
+ phase: "down" | "up";
1274
+ } | {
1275
+ type: "input";
1276
+ elementId: string;
1277
+ text: string;
1278
+ mode?: "replace" | "append" | undefined;
1279
+ } | {
1280
+ type: "swipe";
1281
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1282
+ elementId: string;
1283
+ } | {
1284
+ type: "scroll";
1285
+ x: number;
1286
+ y: number;
1287
+ elementId: string;
1288
+ } | {
1289
+ type: "keyboard";
1290
+ visible: boolean;
1291
+ } | {
1292
+ type: "wait";
1293
+ elementId: string;
1294
+ timeoutMs?: number | undefined;
1295
+ } | {
1296
+ type: "hook";
1297
+ name: string;
1298
+ value?: unknown;
1299
+ })[];
1300
+ } | undefined;
1301
+ }>, "many">, {
1302
+ id: string;
1303
+ profile: {
1304
+ window: {
1305
+ width: number;
1306
+ height: number;
1307
+ };
1308
+ pixelRatio: number;
1309
+ fontScale: number;
1310
+ insets: {
1311
+ top: number;
1312
+ right: number;
1313
+ bottom: number;
1314
+ left: number;
1315
+ };
1316
+ root: {
1317
+ x: number;
1318
+ y: number;
1319
+ width: number;
1320
+ height: number;
1321
+ };
1322
+ orientation: "portrait" | "landscape";
1323
+ };
1324
+ script?: {
1325
+ scenarioId: string;
1326
+ reset: ({
1327
+ type: "navigate";
1328
+ url: string;
1329
+ } | {
1330
+ type: "tap";
1331
+ elementId: string;
1332
+ } | {
1333
+ type: "press";
1334
+ elementId: string;
1335
+ phase: "down" | "up";
1336
+ } | {
1337
+ type: "input";
1338
+ elementId: string;
1339
+ text: string;
1340
+ mode: "replace" | "append";
1341
+ } | {
1342
+ type: "swipe";
1343
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1344
+ elementId: string;
1345
+ } | {
1346
+ type: "scroll";
1347
+ x: number;
1348
+ y: number;
1349
+ elementId: string;
1350
+ } | {
1351
+ type: "keyboard";
1352
+ visible: boolean;
1353
+ } | {
1354
+ type: "wait";
1355
+ elementId: string;
1356
+ timeoutMs: number;
1357
+ } | {
1358
+ type: "hook";
1359
+ name: string;
1360
+ value?: unknown;
1361
+ })[];
1362
+ actions: ({
1363
+ type: "navigate";
1364
+ url: string;
1365
+ } | {
1366
+ type: "tap";
1367
+ elementId: string;
1368
+ } | {
1369
+ type: "press";
1370
+ elementId: string;
1371
+ phase: "down" | "up";
1372
+ } | {
1373
+ type: "input";
1374
+ elementId: string;
1375
+ text: string;
1376
+ mode: "replace" | "append";
1377
+ } | {
1378
+ type: "swipe";
1379
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1380
+ elementId: string;
1381
+ } | {
1382
+ type: "scroll";
1383
+ x: number;
1384
+ y: number;
1385
+ elementId: string;
1386
+ } | {
1387
+ type: "keyboard";
1388
+ visible: boolean;
1389
+ } | {
1390
+ type: "wait";
1391
+ elementId: string;
1392
+ timeoutMs: number;
1393
+ } | {
1394
+ type: "hook";
1395
+ name: string;
1396
+ value?: unknown;
1397
+ })[];
1398
+ } | undefined;
1399
+ }[], {
1400
+ id: string;
1401
+ profile: {
1402
+ window: {
1403
+ width: number;
1404
+ height: number;
1405
+ };
1406
+ pixelRatio: number;
1407
+ fontScale: number;
1408
+ insets: {
1409
+ top: number;
1410
+ right: number;
1411
+ bottom: number;
1412
+ left: number;
1413
+ };
1414
+ root: {
1415
+ x: number;
1416
+ y: number;
1417
+ width: number;
1418
+ height: number;
1419
+ };
1420
+ orientation: "portrait" | "landscape";
1421
+ };
1422
+ script?: {
1423
+ scenarioId: string;
1424
+ reset: ({
1425
+ type: "navigate";
1426
+ url: string;
1427
+ } | {
1428
+ type: "tap";
1429
+ elementId: string;
1430
+ } | {
1431
+ type: "press";
1432
+ elementId: string;
1433
+ phase: "down" | "up";
1434
+ } | {
1435
+ type: "input";
1436
+ elementId: string;
1437
+ text: string;
1438
+ mode?: "replace" | "append" | undefined;
1439
+ } | {
1440
+ type: "swipe";
1441
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1442
+ elementId: string;
1443
+ } | {
1444
+ type: "scroll";
1445
+ x: number;
1446
+ y: number;
1447
+ elementId: string;
1448
+ } | {
1449
+ type: "keyboard";
1450
+ visible: boolean;
1451
+ } | {
1452
+ type: "wait";
1453
+ elementId: string;
1454
+ timeoutMs?: number | undefined;
1455
+ } | {
1456
+ type: "hook";
1457
+ name: string;
1458
+ value?: unknown;
1459
+ })[];
1460
+ actions: ({
1461
+ type: "navigate";
1462
+ url: string;
1463
+ } | {
1464
+ type: "tap";
1465
+ elementId: string;
1466
+ } | {
1467
+ type: "press";
1468
+ elementId: string;
1469
+ phase: "down" | "up";
1470
+ } | {
1471
+ type: "input";
1472
+ elementId: string;
1473
+ text: string;
1474
+ mode?: "replace" | "append" | undefined;
1475
+ } | {
1476
+ type: "swipe";
1477
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
1478
+ elementId: string;
1479
+ } | {
1480
+ type: "scroll";
1481
+ x: number;
1482
+ y: number;
1483
+ elementId: string;
1484
+ } | {
1485
+ type: "keyboard";
1486
+ visible: boolean;
1487
+ } | {
1488
+ type: "wait";
1489
+ elementId: string;
1490
+ timeoutMs?: number | undefined;
1491
+ } | {
1492
+ type: "hook";
1493
+ name: string;
1494
+ value?: unknown;
1495
+ })[];
1496
+ } | undefined;
1497
+ }[]>;
1498
+ export declare const SuggestionProfileEvidenceSchema: z.ZodObject<{
1499
+ profileId: z.ZodString;
1500
+ platform: z.ZodLiteral<"web">;
1501
+ profile: z.ZodObject<{
1502
+ window: z.ZodObject<{
1503
+ width: z.ZodNumber;
1504
+ height: z.ZodNumber;
1505
+ }, "strict", z.ZodTypeAny, {
1506
+ width: number;
1507
+ height: number;
1508
+ }, {
1509
+ width: number;
1510
+ height: number;
1511
+ }>;
1512
+ pixelRatio: z.ZodNumber;
1513
+ fontScale: z.ZodNumber;
1514
+ insets: z.ZodObject<{
1515
+ top: z.ZodNumber;
1516
+ right: z.ZodNumber;
1517
+ bottom: z.ZodNumber;
1518
+ left: z.ZodNumber;
1519
+ }, "strict", z.ZodTypeAny, {
1520
+ top: number;
1521
+ right: number;
1522
+ bottom: number;
1523
+ left: number;
1524
+ }, {
1525
+ top: number;
1526
+ right: number;
1527
+ bottom: number;
1528
+ left: number;
1529
+ }>;
1530
+ root: z.ZodObject<{
1531
+ x: z.ZodNumber;
1532
+ y: z.ZodNumber;
1533
+ width: z.ZodNumber;
1534
+ height: z.ZodNumber;
1535
+ }, "strict", z.ZodTypeAny, {
1536
+ x: number;
1537
+ y: number;
1538
+ width: number;
1539
+ height: number;
1540
+ }, {
1541
+ x: number;
1542
+ y: number;
1543
+ width: number;
1544
+ height: number;
1545
+ }>;
1546
+ orientation: z.ZodEnum<["portrait", "landscape"]>;
1547
+ }, "strict", z.ZodTypeAny, {
1548
+ window: {
1549
+ width: number;
1550
+ height: number;
1551
+ };
1552
+ pixelRatio: number;
1553
+ fontScale: number;
1554
+ insets: {
1555
+ top: number;
1556
+ right: number;
1557
+ bottom: number;
1558
+ left: number;
1559
+ };
1560
+ root: {
1561
+ x: number;
1562
+ y: number;
1563
+ width: number;
1564
+ height: number;
1565
+ };
1566
+ orientation: "portrait" | "landscape";
1567
+ }, {
1568
+ window: {
1569
+ width: number;
1570
+ height: number;
1571
+ };
1572
+ pixelRatio: number;
1573
+ fontScale: number;
1574
+ insets: {
1575
+ top: number;
1576
+ right: number;
1577
+ bottom: number;
1578
+ left: number;
1579
+ };
1580
+ root: {
1581
+ x: number;
1582
+ y: number;
1583
+ width: number;
1584
+ height: number;
1585
+ };
1586
+ orientation: "portrait" | "landscape";
1587
+ }>;
1588
+ scenarioState: z.ZodOptional<z.ZodEnum<["baseline", "scripted", "initial"]>>;
1589
+ status: z.ZodEnum<["passed", "failed", "unsupported", "unavailable"]>;
1590
+ snapshotId: z.ZodOptional<z.ZodString>;
1591
+ results: z.ZodArray<z.ZodObject<{
1592
+ constraintId: z.ZodString;
1593
+ status: z.ZodEnum<["pass", "fail", "unavailable"]>;
1594
+ elementIds: z.ZodArray<z.ZodString, "many">;
1595
+ deviation: z.ZodNullable<z.ZodNumber>;
1596
+ tolerance: z.ZodNumber;
1597
+ message: z.ZodString;
1598
+ }, "strict", z.ZodTypeAny, {
1599
+ status: "unavailable" | "pass" | "fail";
1600
+ message: string;
1601
+ elementIds: string[];
1602
+ tolerance: number;
1603
+ constraintId: string;
1604
+ deviation: number | null;
1605
+ }, {
1606
+ status: "unavailable" | "pass" | "fail";
1607
+ message: string;
1608
+ elementIds: string[];
1609
+ tolerance: number;
1610
+ constraintId: string;
1611
+ deviation: number | null;
1612
+ }>, "many">;
1613
+ regressions: z.ZodNumber;
1614
+ warnings: z.ZodNumber;
1615
+ error: z.ZodOptional<z.ZodObject<{
1616
+ code: z.ZodEnum<["INVALID_INPUT", "MISSING_ELEMENT", "DUPLICATE_ELEMENT", "STALE_SNAPSHOT", "STALE_SOURCE", "UNSUPPORTED_EDIT", "UNSUPPORTED_PROFILE", "UNSTABLE_LAYOUT", "NATIVE_DISCONNECTED", "TIMEOUT", "VERIFICATION_FAILED", "SESSION_NOT_FOUND", "TRIAL_NOT_FOUND", "SOURCE_OUTSIDE_PROJECT", "INTERNAL_ERROR", "RECOVERY_CONFLICT", "TRANSACTION_CONFLICT", "UNSUPPORTED_ACTION", "PROTOCOL_MISMATCH"]>;
1617
+ message: z.ZodString;
1618
+ details: z.ZodOptional<z.ZodUnknown>;
1619
+ }, "strict", z.ZodTypeAny, {
1620
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
1621
+ message: string;
1622
+ details?: unknown;
1623
+ }, {
1624
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
1625
+ message: string;
1626
+ details?: unknown;
1627
+ }>>;
1628
+ }, "strict", z.ZodTypeAny, {
1629
+ status: "unavailable" | "passed" | "failed" | "unsupported";
1630
+ platform: "web";
1631
+ profile: {
1632
+ window: {
1633
+ width: number;
1634
+ height: number;
1635
+ };
1636
+ pixelRatio: number;
1637
+ fontScale: number;
1638
+ insets: {
1639
+ top: number;
1640
+ right: number;
1641
+ bottom: number;
1642
+ left: number;
1643
+ };
1644
+ root: {
1645
+ x: number;
1646
+ y: number;
1647
+ width: number;
1648
+ height: number;
1649
+ };
1650
+ orientation: "portrait" | "landscape";
1651
+ };
1652
+ warnings: number;
1653
+ profileId: string;
1654
+ results: {
1655
+ status: "unavailable" | "pass" | "fail";
1656
+ message: string;
1657
+ elementIds: string[];
1658
+ tolerance: number;
1659
+ constraintId: string;
1660
+ deviation: number | null;
1661
+ }[];
1662
+ regressions: number;
1663
+ snapshotId?: string | undefined;
1664
+ scenarioState?: "baseline" | "scripted" | "initial" | undefined;
1665
+ error?: {
1666
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
1667
+ message: string;
1668
+ details?: unknown;
1669
+ } | undefined;
1670
+ }, {
1671
+ status: "unavailable" | "passed" | "failed" | "unsupported";
1672
+ platform: "web";
1673
+ profile: {
1674
+ window: {
1675
+ width: number;
1676
+ height: number;
1677
+ };
1678
+ pixelRatio: number;
1679
+ fontScale: number;
1680
+ insets: {
1681
+ top: number;
1682
+ right: number;
1683
+ bottom: number;
1684
+ left: number;
1685
+ };
1686
+ root: {
1687
+ x: number;
1688
+ y: number;
1689
+ width: number;
1690
+ height: number;
1691
+ };
1692
+ orientation: "portrait" | "landscape";
1693
+ };
1694
+ warnings: number;
1695
+ profileId: string;
1696
+ results: {
1697
+ status: "unavailable" | "pass" | "fail";
1698
+ message: string;
1699
+ elementIds: string[];
1700
+ tolerance: number;
1701
+ constraintId: string;
1702
+ deviation: number | null;
1703
+ }[];
1704
+ regressions: number;
1705
+ snapshotId?: string | undefined;
1706
+ scenarioState?: "baseline" | "scripted" | "initial" | undefined;
1707
+ error?: {
1708
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
1709
+ message: string;
1710
+ details?: unknown;
1711
+ } | undefined;
1712
+ }>;
1713
+ export type SuggestionProfileEvidence = z.infer<typeof SuggestionProfileEvidenceSchema>;
1714
+ /** Fresh native baseline seeds proposals only; candidates are still browser trials. */
1715
+ export declare const NativeSuggestionEvidenceSchema: z.ZodEffects<z.ZodObject<{
1716
+ status: z.ZodEnum<["captured", "unsupported", "unavailable"]>;
1717
+ snapshot: z.ZodOptional<z.ZodEffects<z.ZodObject<{
1718
+ schemaVersion: z.ZodLiteral<1>;
1719
+ sessionId: z.ZodString;
1720
+ snapshotId: z.ZodString;
1721
+ platform: z.ZodEnum<["web", "android", "ios"]>;
1722
+ scenarioId: z.ZodString;
1723
+ profile: z.ZodObject<{
1724
+ window: z.ZodObject<{
1725
+ width: z.ZodNumber;
1726
+ height: z.ZodNumber;
1727
+ }, "strict", z.ZodTypeAny, {
1728
+ width: number;
1729
+ height: number;
1730
+ }, {
1731
+ width: number;
1732
+ height: number;
1733
+ }>;
1734
+ pixelRatio: z.ZodNumber;
1735
+ fontScale: z.ZodNumber;
1736
+ insets: z.ZodObject<{
1737
+ top: z.ZodNumber;
1738
+ right: z.ZodNumber;
1739
+ bottom: z.ZodNumber;
1740
+ left: z.ZodNumber;
1741
+ }, "strict", z.ZodTypeAny, {
1742
+ top: number;
1743
+ right: number;
1744
+ bottom: number;
1745
+ left: number;
1746
+ }, {
1747
+ top: number;
1748
+ right: number;
1749
+ bottom: number;
1750
+ left: number;
1751
+ }>;
1752
+ root: z.ZodObject<{
1753
+ x: z.ZodNumber;
1754
+ y: z.ZodNumber;
1755
+ width: z.ZodNumber;
1756
+ height: z.ZodNumber;
1757
+ }, "strict", z.ZodTypeAny, {
1758
+ x: number;
1759
+ y: number;
1760
+ width: number;
1761
+ height: number;
1762
+ }, {
1763
+ x: number;
1764
+ y: number;
1765
+ width: number;
1766
+ height: number;
1767
+ }>;
1768
+ orientation: z.ZodEnum<["portrait", "landscape"]>;
1769
+ }, "strict", z.ZodTypeAny, {
1770
+ window: {
1771
+ width: number;
1772
+ height: number;
1773
+ };
1774
+ pixelRatio: number;
1775
+ fontScale: number;
1776
+ insets: {
1777
+ top: number;
1778
+ right: number;
1779
+ bottom: number;
1780
+ left: number;
1781
+ };
1782
+ root: {
1783
+ x: number;
1784
+ y: number;
1785
+ width: number;
1786
+ height: number;
1787
+ };
1788
+ orientation: "portrait" | "landscape";
1789
+ }, {
1790
+ window: {
1791
+ width: number;
1792
+ height: number;
1793
+ };
1794
+ pixelRatio: number;
1795
+ fontScale: number;
1796
+ insets: {
1797
+ top: number;
1798
+ right: number;
1799
+ bottom: number;
1800
+ left: number;
1801
+ };
1802
+ root: {
1803
+ x: number;
1804
+ y: number;
1805
+ width: number;
1806
+ height: number;
1807
+ };
1808
+ orientation: "portrait" | "landscape";
1809
+ }>;
1810
+ revisions: z.ZodRecord<z.ZodString, z.ZodString>;
1811
+ nodes: z.ZodArray<z.ZodObject<{
1812
+ id: z.ZodString;
1813
+ parentId: z.ZodNullable<z.ZodString>;
1814
+ kind: z.ZodEnum<["View", "Text", "Pressable", "TextInput", "ScrollView", "Image"]>;
1815
+ role: z.ZodNullable<z.ZodString>;
1816
+ rect: z.ZodObject<{
1817
+ x: z.ZodNumber;
1818
+ y: z.ZodNumber;
1819
+ width: z.ZodNumber;
1820
+ height: z.ZodNumber;
1821
+ }, "strict", z.ZodTypeAny, {
1822
+ x: number;
1823
+ y: number;
1824
+ width: number;
1825
+ height: number;
1826
+ }, {
1827
+ x: number;
1828
+ y: number;
1829
+ width: number;
1830
+ height: number;
1831
+ }>;
1832
+ styles: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1833
+ source: z.ZodNullable<z.ZodEffects<z.ZodObject<{
1834
+ path: z.ZodString;
1835
+ styleForm: z.ZodOptional<z.ZodLiteral<"pressable-state">>;
1836
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1837
+ hash: z.ZodString;
1838
+ start: z.ZodNumber;
1839
+ end: z.ZodNumber;
1840
+ line: z.ZodNumber;
1841
+ column: z.ZodNumber;
1842
+ }, "strict", z.ZodTypeAny, {
1843
+ path: string;
1844
+ start: number;
1845
+ end: number;
1846
+ hash: string;
1847
+ line: number;
1848
+ column: number;
1849
+ styleForm?: "pressable-state" | undefined;
1850
+ dependencies?: string[] | undefined;
1851
+ }, {
1852
+ path: string;
1853
+ start: number;
1854
+ end: number;
1855
+ hash: string;
1856
+ line: number;
1857
+ column: number;
1858
+ styleForm?: "pressable-state" | undefined;
1859
+ dependencies?: string[] | undefined;
1860
+ }>, {
1861
+ path: string;
1862
+ start: number;
1863
+ end: number;
1864
+ hash: string;
1865
+ line: number;
1866
+ column: number;
1867
+ styleForm?: "pressable-state" | undefined;
1868
+ dependencies?: string[] | undefined;
1869
+ }, {
1870
+ path: string;
1871
+ start: number;
1872
+ end: number;
1873
+ hash: string;
1874
+ line: number;
1875
+ column: number;
1876
+ styleForm?: "pressable-state" | undefined;
1877
+ dependencies?: string[] | undefined;
1878
+ }>>;
1879
+ editable: z.ZodBoolean;
1880
+ editReason: z.ZodNullable<z.ZodString>;
1881
+ pressableState: z.ZodOptional<z.ZodEnum<["pressed", "rest"]>>;
1882
+ accessibility: z.ZodOptional<z.ZodObject<{
1883
+ authoredLabel: z.ZodOptional<z.ZodString>;
1884
+ authoredHint: z.ZodOptional<z.ZodString>;
1885
+ accessible: z.ZodOptional<z.ZodBoolean>;
1886
+ focusable: z.ZodOptional<z.ZodBoolean>;
1887
+ hidden: z.ZodOptional<z.ZodBoolean>;
1888
+ disabled: z.ZodOptional<z.ZodBoolean>;
1889
+ direction: z.ZodEnum<["ltr", "rtl", "unknown"]>;
1890
+ directionSource: z.ZodOptional<z.ZodEnum<["authored", "native-global", "browser-computed", "unknown"]>>;
1891
+ browser: z.ZodOptional<z.ZodObject<{
1892
+ name: z.ZodNullable<z.ZodString>;
1893
+ focusOrder: z.ZodNullable<z.ZodNumber>;
1894
+ focusOrderSource: z.ZodLiteral<"dom-sequential-estimate">;
1895
+ contrast: z.ZodEffects<z.ZodObject<{
1896
+ status: z.ZodEnum<["measured", "unavailable"]>;
1897
+ ratio: z.ZodOptional<z.ZodNumber>;
1898
+ requiredRatio: z.ZodOptional<z.ZodNumber>;
1899
+ reason: z.ZodOptional<z.ZodString>;
1900
+ }, "strict", z.ZodTypeAny, {
1901
+ status: "measured" | "unavailable";
1902
+ ratio?: number | undefined;
1903
+ requiredRatio?: number | undefined;
1904
+ reason?: string | undefined;
1905
+ }, {
1906
+ status: "measured" | "unavailable";
1907
+ ratio?: number | undefined;
1908
+ requiredRatio?: number | undefined;
1909
+ reason?: string | undefined;
1910
+ }>, {
1911
+ status: "measured" | "unavailable";
1912
+ ratio?: number | undefined;
1913
+ requiredRatio?: number | undefined;
1914
+ reason?: string | undefined;
1915
+ }, {
1916
+ status: "measured" | "unavailable";
1917
+ ratio?: number | undefined;
1918
+ requiredRatio?: number | undefined;
1919
+ reason?: string | undefined;
1920
+ }>;
1921
+ }, "strict", z.ZodTypeAny, {
1922
+ focusOrder: number | null;
1923
+ name: string | null;
1924
+ focusOrderSource: "dom-sequential-estimate";
1925
+ contrast: {
1926
+ status: "measured" | "unavailable";
1927
+ ratio?: number | undefined;
1928
+ requiredRatio?: number | undefined;
1929
+ reason?: string | undefined;
1930
+ };
1931
+ }, {
1932
+ focusOrder: number | null;
1933
+ name: string | null;
1934
+ focusOrderSource: "dom-sequential-estimate";
1935
+ contrast: {
1936
+ status: "measured" | "unavailable";
1937
+ ratio?: number | undefined;
1938
+ requiredRatio?: number | undefined;
1939
+ reason?: string | undefined;
1940
+ };
1941
+ }>>;
1942
+ }, "strict", z.ZodTypeAny, {
1943
+ direction: "unknown" | "ltr" | "rtl";
1944
+ authoredLabel?: string | undefined;
1945
+ authoredHint?: string | undefined;
1946
+ accessible?: boolean | undefined;
1947
+ focusable?: boolean | undefined;
1948
+ hidden?: boolean | undefined;
1949
+ disabled?: boolean | undefined;
1950
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
1951
+ browser?: {
1952
+ focusOrder: number | null;
1953
+ name: string | null;
1954
+ focusOrderSource: "dom-sequential-estimate";
1955
+ contrast: {
1956
+ status: "measured" | "unavailable";
1957
+ ratio?: number | undefined;
1958
+ requiredRatio?: number | undefined;
1959
+ reason?: string | undefined;
1960
+ };
1961
+ } | undefined;
1962
+ }, {
1963
+ direction: "unknown" | "ltr" | "rtl";
1964
+ authoredLabel?: string | undefined;
1965
+ authoredHint?: string | undefined;
1966
+ accessible?: boolean | undefined;
1967
+ focusable?: boolean | undefined;
1968
+ hidden?: boolean | undefined;
1969
+ disabled?: boolean | undefined;
1970
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
1971
+ browser?: {
1972
+ focusOrder: number | null;
1973
+ name: string | null;
1974
+ focusOrderSource: "dom-sequential-estimate";
1975
+ contrast: {
1976
+ status: "measured" | "unavailable";
1977
+ ratio?: number | undefined;
1978
+ requiredRatio?: number | undefined;
1979
+ reason?: string | undefined;
1980
+ };
1981
+ } | undefined;
1982
+ }>>;
1983
+ textFit: z.ZodOptional<z.ZodObject<{
1984
+ status: z.ZodEnum<["supported", "unavailable"]>;
1985
+ fullLineCount: z.ZodOptional<z.ZodNumber>;
1986
+ limitedLineCount: z.ZodOptional<z.ZodNumber>;
1987
+ fullHeight: z.ZodOptional<z.ZodNumber>;
1988
+ availableHeight: z.ZodOptional<z.ZodNumber>;
1989
+ reason: z.ZodOptional<z.ZodString>;
1990
+ }, "strict", z.ZodTypeAny, {
1991
+ status: "unavailable" | "supported";
1992
+ reason?: string | undefined;
1993
+ fullLineCount?: number | undefined;
1994
+ limitedLineCount?: number | undefined;
1995
+ fullHeight?: number | undefined;
1996
+ availableHeight?: number | undefined;
1997
+ }, {
1998
+ status: "unavailable" | "supported";
1999
+ reason?: string | undefined;
2000
+ fullLineCount?: number | undefined;
2001
+ limitedLineCount?: number | undefined;
2002
+ fullHeight?: number | undefined;
2003
+ availableHeight?: number | undefined;
2004
+ }>>;
2005
+ authoredTextProps: z.ZodOptional<z.ZodObject<{
2006
+ fontSize: z.ZodOptional<z.ZodNumber>;
2007
+ lineHeight: z.ZodOptional<z.ZodNumber>;
2008
+ numberOfLines: z.ZodOptional<z.ZodNumber>;
2009
+ allowFontScaling: z.ZodOptional<z.ZodBoolean>;
2010
+ ellipsizeMode: z.ZodOptional<z.ZodEnum<["head", "middle", "tail", "clip"]>>;
2011
+ }, "strict", z.ZodTypeAny, {
2012
+ fontSize?: number | undefined;
2013
+ lineHeight?: number | undefined;
2014
+ numberOfLines?: number | undefined;
2015
+ allowFontScaling?: boolean | undefined;
2016
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
2017
+ }, {
2018
+ fontSize?: number | undefined;
2019
+ lineHeight?: number | undefined;
2020
+ numberOfLines?: number | undefined;
2021
+ allowFontScaling?: boolean | undefined;
2022
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
2023
+ }>>;
2024
+ measuredLineCount: z.ZodOptional<z.ZodNumber>;
2025
+ }, "strict", z.ZodTypeAny, {
2026
+ id: string;
2027
+ rect: {
2028
+ x: number;
2029
+ y: number;
2030
+ width: number;
2031
+ height: number;
2032
+ };
2033
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
2034
+ source: {
2035
+ path: string;
2036
+ start: number;
2037
+ end: number;
2038
+ hash: string;
2039
+ line: number;
2040
+ column: number;
2041
+ styleForm?: "pressable-state" | undefined;
2042
+ dependencies?: string[] | undefined;
2043
+ } | null;
2044
+ parentId: string | null;
2045
+ role: string | null;
2046
+ styles: Record<string, unknown>;
2047
+ editable: boolean;
2048
+ editReason: string | null;
2049
+ pressableState?: "pressed" | "rest" | undefined;
2050
+ accessibility?: {
2051
+ direction: "unknown" | "ltr" | "rtl";
2052
+ authoredLabel?: string | undefined;
2053
+ authoredHint?: string | undefined;
2054
+ accessible?: boolean | undefined;
2055
+ focusable?: boolean | undefined;
2056
+ hidden?: boolean | undefined;
2057
+ disabled?: boolean | undefined;
2058
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
2059
+ browser?: {
2060
+ focusOrder: number | null;
2061
+ name: string | null;
2062
+ focusOrderSource: "dom-sequential-estimate";
2063
+ contrast: {
2064
+ status: "measured" | "unavailable";
2065
+ ratio?: number | undefined;
2066
+ requiredRatio?: number | undefined;
2067
+ reason?: string | undefined;
2068
+ };
2069
+ } | undefined;
2070
+ } | undefined;
2071
+ textFit?: {
2072
+ status: "unavailable" | "supported";
2073
+ reason?: string | undefined;
2074
+ fullLineCount?: number | undefined;
2075
+ limitedLineCount?: number | undefined;
2076
+ fullHeight?: number | undefined;
2077
+ availableHeight?: number | undefined;
2078
+ } | undefined;
2079
+ authoredTextProps?: {
2080
+ fontSize?: number | undefined;
2081
+ lineHeight?: number | undefined;
2082
+ numberOfLines?: number | undefined;
2083
+ allowFontScaling?: boolean | undefined;
2084
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
2085
+ } | undefined;
2086
+ measuredLineCount?: number | undefined;
2087
+ }, {
2088
+ id: string;
2089
+ rect: {
2090
+ x: number;
2091
+ y: number;
2092
+ width: number;
2093
+ height: number;
2094
+ };
2095
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
2096
+ source: {
2097
+ path: string;
2098
+ start: number;
2099
+ end: number;
2100
+ hash: string;
2101
+ line: number;
2102
+ column: number;
2103
+ styleForm?: "pressable-state" | undefined;
2104
+ dependencies?: string[] | undefined;
2105
+ } | null;
2106
+ parentId: string | null;
2107
+ role: string | null;
2108
+ styles: Record<string, unknown>;
2109
+ editable: boolean;
2110
+ editReason: string | null;
2111
+ pressableState?: "pressed" | "rest" | undefined;
2112
+ accessibility?: {
2113
+ direction: "unknown" | "ltr" | "rtl";
2114
+ authoredLabel?: string | undefined;
2115
+ authoredHint?: string | undefined;
2116
+ accessible?: boolean | undefined;
2117
+ focusable?: boolean | undefined;
2118
+ hidden?: boolean | undefined;
2119
+ disabled?: boolean | undefined;
2120
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
2121
+ browser?: {
2122
+ focusOrder: number | null;
2123
+ name: string | null;
2124
+ focusOrderSource: "dom-sequential-estimate";
2125
+ contrast: {
2126
+ status: "measured" | "unavailable";
2127
+ ratio?: number | undefined;
2128
+ requiredRatio?: number | undefined;
2129
+ reason?: string | undefined;
2130
+ };
2131
+ } | undefined;
2132
+ } | undefined;
2133
+ textFit?: {
2134
+ status: "unavailable" | "supported";
2135
+ reason?: string | undefined;
2136
+ fullLineCount?: number | undefined;
2137
+ limitedLineCount?: number | undefined;
2138
+ fullHeight?: number | undefined;
2139
+ availableHeight?: number | undefined;
2140
+ } | undefined;
2141
+ authoredTextProps?: {
2142
+ fontSize?: number | undefined;
2143
+ lineHeight?: number | undefined;
2144
+ numberOfLines?: number | undefined;
2145
+ allowFontScaling?: boolean | undefined;
2146
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
2147
+ } | undefined;
2148
+ measuredLineCount?: number | undefined;
2149
+ }>, "many">;
2150
+ status: z.ZodEnum<["stable", "unstable"]>;
2151
+ generation: z.ZodNumber;
2152
+ nativeTarget: z.ZodOptional<z.ZodObject<{
2153
+ targetId: z.ZodString;
2154
+ platform: z.ZodEnum<["android", "ios"]>;
2155
+ kind: z.ZodEnum<["physical", "emulator", "simulator"]>;
2156
+ }, "strict", z.ZodTypeAny, {
2157
+ platform: "android" | "ios";
2158
+ kind: "physical" | "emulator" | "simulator";
2159
+ targetId: string;
2160
+ }, {
2161
+ platform: "android" | "ios";
2162
+ kind: "physical" | "emulator" | "simulator";
2163
+ targetId: string;
2164
+ }>>;
2165
+ webDiagnostics: z.ZodOptional<z.ZodObject<{
2166
+ nodes: z.ZodRecord<z.ZodString, z.ZodObject<{
2167
+ clipping: z.ZodEnum<["confirmed", "clear", "unknown"]>;
2168
+ centerHitTest: z.ZodEnum<["confirmed", "clear", "unknown"]>;
2169
+ scrollOverflow: z.ZodObject<{
2170
+ horizontal: z.ZodBoolean;
2171
+ vertical: z.ZodBoolean;
2172
+ }, "strict", z.ZodTypeAny, {
2173
+ horizontal: boolean;
2174
+ vertical: boolean;
2175
+ }, {
2176
+ horizontal: boolean;
2177
+ vertical: boolean;
2178
+ }>;
2179
+ paintOrder: z.ZodNullable<z.ZodNumber>;
2180
+ fonts: z.ZodArray<z.ZodObject<{
2181
+ family: z.ZodString;
2182
+ glyphCount: z.ZodNumber;
2183
+ isCustom: z.ZodNullable<z.ZodBoolean>;
2184
+ }, "strict", z.ZodTypeAny, {
2185
+ family: string;
2186
+ glyphCount: number;
2187
+ isCustom: boolean | null;
2188
+ }, {
2189
+ family: string;
2190
+ glyphCount: number;
2191
+ isCustom: boolean | null;
2192
+ }>, "many">;
2193
+ lineBoxCount: z.ZodNullable<z.ZodNumber>;
2194
+ }, "strict", z.ZodTypeAny, {
2195
+ clipping: "unknown" | "confirmed" | "clear";
2196
+ centerHitTest: "unknown" | "confirmed" | "clear";
2197
+ scrollOverflow: {
2198
+ horizontal: boolean;
2199
+ vertical: boolean;
2200
+ };
2201
+ paintOrder: number | null;
2202
+ fonts: {
2203
+ family: string;
2204
+ glyphCount: number;
2205
+ isCustom: boolean | null;
2206
+ }[];
2207
+ lineBoxCount: number | null;
2208
+ }, {
2209
+ clipping: "unknown" | "confirmed" | "clear";
2210
+ centerHitTest: "unknown" | "confirmed" | "clear";
2211
+ scrollOverflow: {
2212
+ horizontal: boolean;
2213
+ vertical: boolean;
2214
+ };
2215
+ paintOrder: number | null;
2216
+ fonts: {
2217
+ family: string;
2218
+ glyphCount: number;
2219
+ isCustom: boolean | null;
2220
+ }[];
2221
+ lineBoxCount: number | null;
2222
+ }>>;
2223
+ warnings: z.ZodArray<z.ZodObject<{
2224
+ elementId: z.ZodString;
2225
+ code: z.ZodEnum<["CLIPPED", "OCCLUDED", "FONT_LOAD_FAILED", "EVIDENCE_UNAVAILABLE"]>;
2226
+ severity: z.ZodEnum<["confirmed", "uncertain"]>;
2227
+ message: z.ZodString;
2228
+ }, "strict", z.ZodTypeAny, {
2229
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
2230
+ message: string;
2231
+ elementId: string;
2232
+ severity: "confirmed" | "uncertain";
2233
+ }, {
2234
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
2235
+ message: string;
2236
+ elementId: string;
2237
+ severity: "confirmed" | "uncertain";
2238
+ }>, "many">;
2239
+ }, "strict", z.ZodTypeAny, {
2240
+ nodes: Record<string, {
2241
+ clipping: "unknown" | "confirmed" | "clear";
2242
+ centerHitTest: "unknown" | "confirmed" | "clear";
2243
+ scrollOverflow: {
2244
+ horizontal: boolean;
2245
+ vertical: boolean;
2246
+ };
2247
+ paintOrder: number | null;
2248
+ fonts: {
2249
+ family: string;
2250
+ glyphCount: number;
2251
+ isCustom: boolean | null;
2252
+ }[];
2253
+ lineBoxCount: number | null;
2254
+ }>;
2255
+ warnings: {
2256
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
2257
+ message: string;
2258
+ elementId: string;
2259
+ severity: "confirmed" | "uncertain";
2260
+ }[];
2261
+ }, {
2262
+ nodes: Record<string, {
2263
+ clipping: "unknown" | "confirmed" | "clear";
2264
+ centerHitTest: "unknown" | "confirmed" | "clear";
2265
+ scrollOverflow: {
2266
+ horizontal: boolean;
2267
+ vertical: boolean;
2268
+ };
2269
+ paintOrder: number | null;
2270
+ fonts: {
2271
+ family: string;
2272
+ glyphCount: number;
2273
+ isCustom: boolean | null;
2274
+ }[];
2275
+ lineBoxCount: number | null;
2276
+ }>;
2277
+ warnings: {
2278
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
2279
+ message: string;
2280
+ elementId: string;
2281
+ severity: "confirmed" | "uncertain";
2282
+ }[];
2283
+ }>>;
2284
+ }, "strict", z.ZodTypeAny, {
2285
+ status: "stable" | "unstable";
2286
+ platform: "web" | "android" | "ios";
2287
+ schemaVersion: 1;
2288
+ scenarioId: string;
2289
+ profile: {
2290
+ window: {
2291
+ width: number;
2292
+ height: number;
2293
+ };
2294
+ pixelRatio: number;
2295
+ fontScale: number;
2296
+ insets: {
2297
+ top: number;
2298
+ right: number;
2299
+ bottom: number;
2300
+ left: number;
2301
+ };
2302
+ root: {
2303
+ x: number;
2304
+ y: number;
2305
+ width: number;
2306
+ height: number;
2307
+ };
2308
+ orientation: "portrait" | "landscape";
2309
+ };
2310
+ snapshotId: string;
2311
+ nodes: {
2312
+ id: string;
2313
+ rect: {
2314
+ x: number;
2315
+ y: number;
2316
+ width: number;
2317
+ height: number;
2318
+ };
2319
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
2320
+ source: {
2321
+ path: string;
2322
+ start: number;
2323
+ end: number;
2324
+ hash: string;
2325
+ line: number;
2326
+ column: number;
2327
+ styleForm?: "pressable-state" | undefined;
2328
+ dependencies?: string[] | undefined;
2329
+ } | null;
2330
+ parentId: string | null;
2331
+ role: string | null;
2332
+ styles: Record<string, unknown>;
2333
+ editable: boolean;
2334
+ editReason: string | null;
2335
+ pressableState?: "pressed" | "rest" | undefined;
2336
+ accessibility?: {
2337
+ direction: "unknown" | "ltr" | "rtl";
2338
+ authoredLabel?: string | undefined;
2339
+ authoredHint?: string | undefined;
2340
+ accessible?: boolean | undefined;
2341
+ focusable?: boolean | undefined;
2342
+ hidden?: boolean | undefined;
2343
+ disabled?: boolean | undefined;
2344
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
2345
+ browser?: {
2346
+ focusOrder: number | null;
2347
+ name: string | null;
2348
+ focusOrderSource: "dom-sequential-estimate";
2349
+ contrast: {
2350
+ status: "measured" | "unavailable";
2351
+ ratio?: number | undefined;
2352
+ requiredRatio?: number | undefined;
2353
+ reason?: string | undefined;
2354
+ };
2355
+ } | undefined;
2356
+ } | undefined;
2357
+ textFit?: {
2358
+ status: "unavailable" | "supported";
2359
+ reason?: string | undefined;
2360
+ fullLineCount?: number | undefined;
2361
+ limitedLineCount?: number | undefined;
2362
+ fullHeight?: number | undefined;
2363
+ availableHeight?: number | undefined;
2364
+ } | undefined;
2365
+ authoredTextProps?: {
2366
+ fontSize?: number | undefined;
2367
+ lineHeight?: number | undefined;
2368
+ numberOfLines?: number | undefined;
2369
+ allowFontScaling?: boolean | undefined;
2370
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
2371
+ } | undefined;
2372
+ measuredLineCount?: number | undefined;
2373
+ }[];
2374
+ sessionId: string;
2375
+ revisions: Record<string, string>;
2376
+ generation: number;
2377
+ nativeTarget?: {
2378
+ platform: "android" | "ios";
2379
+ kind: "physical" | "emulator" | "simulator";
2380
+ targetId: string;
2381
+ } | undefined;
2382
+ webDiagnostics?: {
2383
+ nodes: Record<string, {
2384
+ clipping: "unknown" | "confirmed" | "clear";
2385
+ centerHitTest: "unknown" | "confirmed" | "clear";
2386
+ scrollOverflow: {
2387
+ horizontal: boolean;
2388
+ vertical: boolean;
2389
+ };
2390
+ paintOrder: number | null;
2391
+ fonts: {
2392
+ family: string;
2393
+ glyphCount: number;
2394
+ isCustom: boolean | null;
2395
+ }[];
2396
+ lineBoxCount: number | null;
2397
+ }>;
2398
+ warnings: {
2399
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
2400
+ message: string;
2401
+ elementId: string;
2402
+ severity: "confirmed" | "uncertain";
2403
+ }[];
2404
+ } | undefined;
2405
+ }, {
2406
+ status: "stable" | "unstable";
2407
+ platform: "web" | "android" | "ios";
2408
+ schemaVersion: 1;
2409
+ scenarioId: string;
2410
+ profile: {
2411
+ window: {
2412
+ width: number;
2413
+ height: number;
2414
+ };
2415
+ pixelRatio: number;
2416
+ fontScale: number;
2417
+ insets: {
2418
+ top: number;
2419
+ right: number;
2420
+ bottom: number;
2421
+ left: number;
2422
+ };
2423
+ root: {
2424
+ x: number;
2425
+ y: number;
2426
+ width: number;
2427
+ height: number;
2428
+ };
2429
+ orientation: "portrait" | "landscape";
2430
+ };
2431
+ snapshotId: string;
2432
+ nodes: {
2433
+ id: string;
2434
+ rect: {
2435
+ x: number;
2436
+ y: number;
2437
+ width: number;
2438
+ height: number;
2439
+ };
2440
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
2441
+ source: {
2442
+ path: string;
2443
+ start: number;
2444
+ end: number;
2445
+ hash: string;
2446
+ line: number;
2447
+ column: number;
2448
+ styleForm?: "pressable-state" | undefined;
2449
+ dependencies?: string[] | undefined;
2450
+ } | null;
2451
+ parentId: string | null;
2452
+ role: string | null;
2453
+ styles: Record<string, unknown>;
2454
+ editable: boolean;
2455
+ editReason: string | null;
2456
+ pressableState?: "pressed" | "rest" | undefined;
2457
+ accessibility?: {
2458
+ direction: "unknown" | "ltr" | "rtl";
2459
+ authoredLabel?: string | undefined;
2460
+ authoredHint?: string | undefined;
2461
+ accessible?: boolean | undefined;
2462
+ focusable?: boolean | undefined;
2463
+ hidden?: boolean | undefined;
2464
+ disabled?: boolean | undefined;
2465
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
2466
+ browser?: {
2467
+ focusOrder: number | null;
2468
+ name: string | null;
2469
+ focusOrderSource: "dom-sequential-estimate";
2470
+ contrast: {
2471
+ status: "measured" | "unavailable";
2472
+ ratio?: number | undefined;
2473
+ requiredRatio?: number | undefined;
2474
+ reason?: string | undefined;
2475
+ };
2476
+ } | undefined;
2477
+ } | undefined;
2478
+ textFit?: {
2479
+ status: "unavailable" | "supported";
2480
+ reason?: string | undefined;
2481
+ fullLineCount?: number | undefined;
2482
+ limitedLineCount?: number | undefined;
2483
+ fullHeight?: number | undefined;
2484
+ availableHeight?: number | undefined;
2485
+ } | undefined;
2486
+ authoredTextProps?: {
2487
+ fontSize?: number | undefined;
2488
+ lineHeight?: number | undefined;
2489
+ numberOfLines?: number | undefined;
2490
+ allowFontScaling?: boolean | undefined;
2491
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
2492
+ } | undefined;
2493
+ measuredLineCount?: number | undefined;
2494
+ }[];
2495
+ sessionId: string;
2496
+ revisions: Record<string, string>;
2497
+ generation: number;
2498
+ nativeTarget?: {
2499
+ platform: "android" | "ios";
2500
+ kind: "physical" | "emulator" | "simulator";
2501
+ targetId: string;
2502
+ } | undefined;
2503
+ webDiagnostics?: {
2504
+ nodes: Record<string, {
2505
+ clipping: "unknown" | "confirmed" | "clear";
2506
+ centerHitTest: "unknown" | "confirmed" | "clear";
2507
+ scrollOverflow: {
2508
+ horizontal: boolean;
2509
+ vertical: boolean;
2510
+ };
2511
+ paintOrder: number | null;
2512
+ fonts: {
2513
+ family: string;
2514
+ glyphCount: number;
2515
+ isCustom: boolean | null;
2516
+ }[];
2517
+ lineBoxCount: number | null;
2518
+ }>;
2519
+ warnings: {
2520
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
2521
+ message: string;
2522
+ elementId: string;
2523
+ severity: "confirmed" | "uncertain";
2524
+ }[];
2525
+ } | undefined;
2526
+ }>, {
2527
+ status: "stable" | "unstable";
2528
+ platform: "web" | "android" | "ios";
2529
+ schemaVersion: 1;
2530
+ scenarioId: string;
2531
+ profile: {
2532
+ window: {
2533
+ width: number;
2534
+ height: number;
2535
+ };
2536
+ pixelRatio: number;
2537
+ fontScale: number;
2538
+ insets: {
2539
+ top: number;
2540
+ right: number;
2541
+ bottom: number;
2542
+ left: number;
2543
+ };
2544
+ root: {
2545
+ x: number;
2546
+ y: number;
2547
+ width: number;
2548
+ height: number;
2549
+ };
2550
+ orientation: "portrait" | "landscape";
2551
+ };
2552
+ snapshotId: string;
2553
+ nodes: {
2554
+ id: string;
2555
+ rect: {
2556
+ x: number;
2557
+ y: number;
2558
+ width: number;
2559
+ height: number;
2560
+ };
2561
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
2562
+ source: {
2563
+ path: string;
2564
+ start: number;
2565
+ end: number;
2566
+ hash: string;
2567
+ line: number;
2568
+ column: number;
2569
+ styleForm?: "pressable-state" | undefined;
2570
+ dependencies?: string[] | undefined;
2571
+ } | null;
2572
+ parentId: string | null;
2573
+ role: string | null;
2574
+ styles: Record<string, unknown>;
2575
+ editable: boolean;
2576
+ editReason: string | null;
2577
+ pressableState?: "pressed" | "rest" | undefined;
2578
+ accessibility?: {
2579
+ direction: "unknown" | "ltr" | "rtl";
2580
+ authoredLabel?: string | undefined;
2581
+ authoredHint?: string | undefined;
2582
+ accessible?: boolean | undefined;
2583
+ focusable?: boolean | undefined;
2584
+ hidden?: boolean | undefined;
2585
+ disabled?: boolean | undefined;
2586
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
2587
+ browser?: {
2588
+ focusOrder: number | null;
2589
+ name: string | null;
2590
+ focusOrderSource: "dom-sequential-estimate";
2591
+ contrast: {
2592
+ status: "measured" | "unavailable";
2593
+ ratio?: number | undefined;
2594
+ requiredRatio?: number | undefined;
2595
+ reason?: string | undefined;
2596
+ };
2597
+ } | undefined;
2598
+ } | undefined;
2599
+ textFit?: {
2600
+ status: "unavailable" | "supported";
2601
+ reason?: string | undefined;
2602
+ fullLineCount?: number | undefined;
2603
+ limitedLineCount?: number | undefined;
2604
+ fullHeight?: number | undefined;
2605
+ availableHeight?: number | undefined;
2606
+ } | undefined;
2607
+ authoredTextProps?: {
2608
+ fontSize?: number | undefined;
2609
+ lineHeight?: number | undefined;
2610
+ numberOfLines?: number | undefined;
2611
+ allowFontScaling?: boolean | undefined;
2612
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
2613
+ } | undefined;
2614
+ measuredLineCount?: number | undefined;
2615
+ }[];
2616
+ sessionId: string;
2617
+ revisions: Record<string, string>;
2618
+ generation: number;
2619
+ nativeTarget?: {
2620
+ platform: "android" | "ios";
2621
+ kind: "physical" | "emulator" | "simulator";
2622
+ targetId: string;
2623
+ } | undefined;
2624
+ webDiagnostics?: {
2625
+ nodes: Record<string, {
2626
+ clipping: "unknown" | "confirmed" | "clear";
2627
+ centerHitTest: "unknown" | "confirmed" | "clear";
2628
+ scrollOverflow: {
2629
+ horizontal: boolean;
2630
+ vertical: boolean;
2631
+ };
2632
+ paintOrder: number | null;
2633
+ fonts: {
2634
+ family: string;
2635
+ glyphCount: number;
2636
+ isCustom: boolean | null;
2637
+ }[];
2638
+ lineBoxCount: number | null;
2639
+ }>;
2640
+ warnings: {
2641
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
2642
+ message: string;
2643
+ elementId: string;
2644
+ severity: "confirmed" | "uncertain";
2645
+ }[];
2646
+ } | undefined;
2647
+ }, {
2648
+ status: "stable" | "unstable";
2649
+ platform: "web" | "android" | "ios";
2650
+ schemaVersion: 1;
2651
+ scenarioId: string;
2652
+ profile: {
2653
+ window: {
2654
+ width: number;
2655
+ height: number;
2656
+ };
2657
+ pixelRatio: number;
2658
+ fontScale: number;
2659
+ insets: {
2660
+ top: number;
2661
+ right: number;
2662
+ bottom: number;
2663
+ left: number;
2664
+ };
2665
+ root: {
2666
+ x: number;
2667
+ y: number;
2668
+ width: number;
2669
+ height: number;
2670
+ };
2671
+ orientation: "portrait" | "landscape";
2672
+ };
2673
+ snapshotId: string;
2674
+ nodes: {
2675
+ id: string;
2676
+ rect: {
2677
+ x: number;
2678
+ y: number;
2679
+ width: number;
2680
+ height: number;
2681
+ };
2682
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
2683
+ source: {
2684
+ path: string;
2685
+ start: number;
2686
+ end: number;
2687
+ hash: string;
2688
+ line: number;
2689
+ column: number;
2690
+ styleForm?: "pressable-state" | undefined;
2691
+ dependencies?: string[] | undefined;
2692
+ } | null;
2693
+ parentId: string | null;
2694
+ role: string | null;
2695
+ styles: Record<string, unknown>;
2696
+ editable: boolean;
2697
+ editReason: string | null;
2698
+ pressableState?: "pressed" | "rest" | undefined;
2699
+ accessibility?: {
2700
+ direction: "unknown" | "ltr" | "rtl";
2701
+ authoredLabel?: string | undefined;
2702
+ authoredHint?: string | undefined;
2703
+ accessible?: boolean | undefined;
2704
+ focusable?: boolean | undefined;
2705
+ hidden?: boolean | undefined;
2706
+ disabled?: boolean | undefined;
2707
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
2708
+ browser?: {
2709
+ focusOrder: number | null;
2710
+ name: string | null;
2711
+ focusOrderSource: "dom-sequential-estimate";
2712
+ contrast: {
2713
+ status: "measured" | "unavailable";
2714
+ ratio?: number | undefined;
2715
+ requiredRatio?: number | undefined;
2716
+ reason?: string | undefined;
2717
+ };
2718
+ } | undefined;
2719
+ } | undefined;
2720
+ textFit?: {
2721
+ status: "unavailable" | "supported";
2722
+ reason?: string | undefined;
2723
+ fullLineCount?: number | undefined;
2724
+ limitedLineCount?: number | undefined;
2725
+ fullHeight?: number | undefined;
2726
+ availableHeight?: number | undefined;
2727
+ } | undefined;
2728
+ authoredTextProps?: {
2729
+ fontSize?: number | undefined;
2730
+ lineHeight?: number | undefined;
2731
+ numberOfLines?: number | undefined;
2732
+ allowFontScaling?: boolean | undefined;
2733
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
2734
+ } | undefined;
2735
+ measuredLineCount?: number | undefined;
2736
+ }[];
2737
+ sessionId: string;
2738
+ revisions: Record<string, string>;
2739
+ generation: number;
2740
+ nativeTarget?: {
2741
+ platform: "android" | "ios";
2742
+ kind: "physical" | "emulator" | "simulator";
2743
+ targetId: string;
2744
+ } | undefined;
2745
+ webDiagnostics?: {
2746
+ nodes: Record<string, {
2747
+ clipping: "unknown" | "confirmed" | "clear";
2748
+ centerHitTest: "unknown" | "confirmed" | "clear";
2749
+ scrollOverflow: {
2750
+ horizontal: boolean;
2751
+ vertical: boolean;
2752
+ };
2753
+ paintOrder: number | null;
2754
+ fonts: {
2755
+ family: string;
2756
+ glyphCount: number;
2757
+ isCustom: boolean | null;
2758
+ }[];
2759
+ lineBoxCount: number | null;
2760
+ }>;
2761
+ warnings: {
2762
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
2763
+ message: string;
2764
+ elementId: string;
2765
+ severity: "confirmed" | "uncertain";
2766
+ }[];
2767
+ } | undefined;
2768
+ }>>;
2769
+ results: z.ZodArray<z.ZodObject<{
2770
+ constraintId: z.ZodString;
2771
+ status: z.ZodEnum<["pass", "fail", "unavailable"]>;
2772
+ elementIds: z.ZodArray<z.ZodString, "many">;
2773
+ deviation: z.ZodNullable<z.ZodNumber>;
2774
+ tolerance: z.ZodNumber;
2775
+ message: z.ZodString;
2776
+ }, "strict", z.ZodTypeAny, {
2777
+ status: "unavailable" | "pass" | "fail";
2778
+ message: string;
2779
+ elementIds: string[];
2780
+ tolerance: number;
2781
+ constraintId: string;
2782
+ deviation: number | null;
2783
+ }, {
2784
+ status: "unavailable" | "pass" | "fail";
2785
+ message: string;
2786
+ elementIds: string[];
2787
+ tolerance: number;
2788
+ constraintId: string;
2789
+ deviation: number | null;
2790
+ }>, "many">;
2791
+ error: z.ZodOptional<z.ZodObject<{
2792
+ code: z.ZodEnum<["INVALID_INPUT", "MISSING_ELEMENT", "DUPLICATE_ELEMENT", "STALE_SNAPSHOT", "STALE_SOURCE", "UNSUPPORTED_EDIT", "UNSUPPORTED_PROFILE", "UNSTABLE_LAYOUT", "NATIVE_DISCONNECTED", "TIMEOUT", "VERIFICATION_FAILED", "SESSION_NOT_FOUND", "TRIAL_NOT_FOUND", "SOURCE_OUTSIDE_PROJECT", "INTERNAL_ERROR", "RECOVERY_CONFLICT", "TRANSACTION_CONFLICT", "UNSUPPORTED_ACTION", "PROTOCOL_MISMATCH"]>;
2793
+ message: z.ZodString;
2794
+ details: z.ZodOptional<z.ZodUnknown>;
2795
+ }, "strict", z.ZodTypeAny, {
2796
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
2797
+ message: string;
2798
+ details?: unknown;
2799
+ }, {
2800
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
2801
+ message: string;
2802
+ details?: unknown;
2803
+ }>>;
2804
+ }, "strict", z.ZodTypeAny, {
2805
+ status: "unavailable" | "unsupported" | "captured";
2806
+ results: {
2807
+ status: "unavailable" | "pass" | "fail";
2808
+ message: string;
2809
+ elementIds: string[];
2810
+ tolerance: number;
2811
+ constraintId: string;
2812
+ deviation: number | null;
2813
+ }[];
2814
+ error?: {
2815
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
2816
+ message: string;
2817
+ details?: unknown;
2818
+ } | undefined;
2819
+ snapshot?: {
2820
+ status: "stable" | "unstable";
2821
+ platform: "web" | "android" | "ios";
2822
+ schemaVersion: 1;
2823
+ scenarioId: string;
2824
+ profile: {
2825
+ window: {
2826
+ width: number;
2827
+ height: number;
2828
+ };
2829
+ pixelRatio: number;
2830
+ fontScale: number;
2831
+ insets: {
2832
+ top: number;
2833
+ right: number;
2834
+ bottom: number;
2835
+ left: number;
2836
+ };
2837
+ root: {
2838
+ x: number;
2839
+ y: number;
2840
+ width: number;
2841
+ height: number;
2842
+ };
2843
+ orientation: "portrait" | "landscape";
2844
+ };
2845
+ snapshotId: string;
2846
+ nodes: {
2847
+ id: string;
2848
+ rect: {
2849
+ x: number;
2850
+ y: number;
2851
+ width: number;
2852
+ height: number;
2853
+ };
2854
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
2855
+ source: {
2856
+ path: string;
2857
+ start: number;
2858
+ end: number;
2859
+ hash: string;
2860
+ line: number;
2861
+ column: number;
2862
+ styleForm?: "pressable-state" | undefined;
2863
+ dependencies?: string[] | undefined;
2864
+ } | null;
2865
+ parentId: string | null;
2866
+ role: string | null;
2867
+ styles: Record<string, unknown>;
2868
+ editable: boolean;
2869
+ editReason: string | null;
2870
+ pressableState?: "pressed" | "rest" | undefined;
2871
+ accessibility?: {
2872
+ direction: "unknown" | "ltr" | "rtl";
2873
+ authoredLabel?: string | undefined;
2874
+ authoredHint?: string | undefined;
2875
+ accessible?: boolean | undefined;
2876
+ focusable?: boolean | undefined;
2877
+ hidden?: boolean | undefined;
2878
+ disabled?: boolean | undefined;
2879
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
2880
+ browser?: {
2881
+ focusOrder: number | null;
2882
+ name: string | null;
2883
+ focusOrderSource: "dom-sequential-estimate";
2884
+ contrast: {
2885
+ status: "measured" | "unavailable";
2886
+ ratio?: number | undefined;
2887
+ requiredRatio?: number | undefined;
2888
+ reason?: string | undefined;
2889
+ };
2890
+ } | undefined;
2891
+ } | undefined;
2892
+ textFit?: {
2893
+ status: "unavailable" | "supported";
2894
+ reason?: string | undefined;
2895
+ fullLineCount?: number | undefined;
2896
+ limitedLineCount?: number | undefined;
2897
+ fullHeight?: number | undefined;
2898
+ availableHeight?: number | undefined;
2899
+ } | undefined;
2900
+ authoredTextProps?: {
2901
+ fontSize?: number | undefined;
2902
+ lineHeight?: number | undefined;
2903
+ numberOfLines?: number | undefined;
2904
+ allowFontScaling?: boolean | undefined;
2905
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
2906
+ } | undefined;
2907
+ measuredLineCount?: number | undefined;
2908
+ }[];
2909
+ sessionId: string;
2910
+ revisions: Record<string, string>;
2911
+ generation: number;
2912
+ nativeTarget?: {
2913
+ platform: "android" | "ios";
2914
+ kind: "physical" | "emulator" | "simulator";
2915
+ targetId: string;
2916
+ } | undefined;
2917
+ webDiagnostics?: {
2918
+ nodes: Record<string, {
2919
+ clipping: "unknown" | "confirmed" | "clear";
2920
+ centerHitTest: "unknown" | "confirmed" | "clear";
2921
+ scrollOverflow: {
2922
+ horizontal: boolean;
2923
+ vertical: boolean;
2924
+ };
2925
+ paintOrder: number | null;
2926
+ fonts: {
2927
+ family: string;
2928
+ glyphCount: number;
2929
+ isCustom: boolean | null;
2930
+ }[];
2931
+ lineBoxCount: number | null;
2932
+ }>;
2933
+ warnings: {
2934
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
2935
+ message: string;
2936
+ elementId: string;
2937
+ severity: "confirmed" | "uncertain";
2938
+ }[];
2939
+ } | undefined;
2940
+ } | undefined;
2941
+ }, {
2942
+ status: "unavailable" | "unsupported" | "captured";
2943
+ results: {
2944
+ status: "unavailable" | "pass" | "fail";
2945
+ message: string;
2946
+ elementIds: string[];
2947
+ tolerance: number;
2948
+ constraintId: string;
2949
+ deviation: number | null;
2950
+ }[];
2951
+ error?: {
2952
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
2953
+ message: string;
2954
+ details?: unknown;
2955
+ } | undefined;
2956
+ snapshot?: {
2957
+ status: "stable" | "unstable";
2958
+ platform: "web" | "android" | "ios";
2959
+ schemaVersion: 1;
2960
+ scenarioId: string;
2961
+ profile: {
2962
+ window: {
2963
+ width: number;
2964
+ height: number;
2965
+ };
2966
+ pixelRatio: number;
2967
+ fontScale: number;
2968
+ insets: {
2969
+ top: number;
2970
+ right: number;
2971
+ bottom: number;
2972
+ left: number;
2973
+ };
2974
+ root: {
2975
+ x: number;
2976
+ y: number;
2977
+ width: number;
2978
+ height: number;
2979
+ };
2980
+ orientation: "portrait" | "landscape";
2981
+ };
2982
+ snapshotId: string;
2983
+ nodes: {
2984
+ id: string;
2985
+ rect: {
2986
+ x: number;
2987
+ y: number;
2988
+ width: number;
2989
+ height: number;
2990
+ };
2991
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
2992
+ source: {
2993
+ path: string;
2994
+ start: number;
2995
+ end: number;
2996
+ hash: string;
2997
+ line: number;
2998
+ column: number;
2999
+ styleForm?: "pressable-state" | undefined;
3000
+ dependencies?: string[] | undefined;
3001
+ } | null;
3002
+ parentId: string | null;
3003
+ role: string | null;
3004
+ styles: Record<string, unknown>;
3005
+ editable: boolean;
3006
+ editReason: string | null;
3007
+ pressableState?: "pressed" | "rest" | undefined;
3008
+ accessibility?: {
3009
+ direction: "unknown" | "ltr" | "rtl";
3010
+ authoredLabel?: string | undefined;
3011
+ authoredHint?: string | undefined;
3012
+ accessible?: boolean | undefined;
3013
+ focusable?: boolean | undefined;
3014
+ hidden?: boolean | undefined;
3015
+ disabled?: boolean | undefined;
3016
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
3017
+ browser?: {
3018
+ focusOrder: number | null;
3019
+ name: string | null;
3020
+ focusOrderSource: "dom-sequential-estimate";
3021
+ contrast: {
3022
+ status: "measured" | "unavailable";
3023
+ ratio?: number | undefined;
3024
+ requiredRatio?: number | undefined;
3025
+ reason?: string | undefined;
3026
+ };
3027
+ } | undefined;
3028
+ } | undefined;
3029
+ textFit?: {
3030
+ status: "unavailable" | "supported";
3031
+ reason?: string | undefined;
3032
+ fullLineCount?: number | undefined;
3033
+ limitedLineCount?: number | undefined;
3034
+ fullHeight?: number | undefined;
3035
+ availableHeight?: number | undefined;
3036
+ } | undefined;
3037
+ authoredTextProps?: {
3038
+ fontSize?: number | undefined;
3039
+ lineHeight?: number | undefined;
3040
+ numberOfLines?: number | undefined;
3041
+ allowFontScaling?: boolean | undefined;
3042
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
3043
+ } | undefined;
3044
+ measuredLineCount?: number | undefined;
3045
+ }[];
3046
+ sessionId: string;
3047
+ revisions: Record<string, string>;
3048
+ generation: number;
3049
+ nativeTarget?: {
3050
+ platform: "android" | "ios";
3051
+ kind: "physical" | "emulator" | "simulator";
3052
+ targetId: string;
3053
+ } | undefined;
3054
+ webDiagnostics?: {
3055
+ nodes: Record<string, {
3056
+ clipping: "unknown" | "confirmed" | "clear";
3057
+ centerHitTest: "unknown" | "confirmed" | "clear";
3058
+ scrollOverflow: {
3059
+ horizontal: boolean;
3060
+ vertical: boolean;
3061
+ };
3062
+ paintOrder: number | null;
3063
+ fonts: {
3064
+ family: string;
3065
+ glyphCount: number;
3066
+ isCustom: boolean | null;
3067
+ }[];
3068
+ lineBoxCount: number | null;
3069
+ }>;
3070
+ warnings: {
3071
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
3072
+ message: string;
3073
+ elementId: string;
3074
+ severity: "confirmed" | "uncertain";
3075
+ }[];
3076
+ } | undefined;
3077
+ } | undefined;
3078
+ }>, {
3079
+ status: "unavailable" | "unsupported" | "captured";
3080
+ results: {
3081
+ status: "unavailable" | "pass" | "fail";
3082
+ message: string;
3083
+ elementIds: string[];
3084
+ tolerance: number;
3085
+ constraintId: string;
3086
+ deviation: number | null;
3087
+ }[];
3088
+ error?: {
3089
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
3090
+ message: string;
3091
+ details?: unknown;
3092
+ } | undefined;
3093
+ snapshot?: {
3094
+ status: "stable" | "unstable";
3095
+ platform: "web" | "android" | "ios";
3096
+ schemaVersion: 1;
3097
+ scenarioId: string;
3098
+ profile: {
3099
+ window: {
3100
+ width: number;
3101
+ height: number;
3102
+ };
3103
+ pixelRatio: number;
3104
+ fontScale: number;
3105
+ insets: {
3106
+ top: number;
3107
+ right: number;
3108
+ bottom: number;
3109
+ left: number;
3110
+ };
3111
+ root: {
3112
+ x: number;
3113
+ y: number;
3114
+ width: number;
3115
+ height: number;
3116
+ };
3117
+ orientation: "portrait" | "landscape";
3118
+ };
3119
+ snapshotId: string;
3120
+ nodes: {
3121
+ id: string;
3122
+ rect: {
3123
+ x: number;
3124
+ y: number;
3125
+ width: number;
3126
+ height: number;
3127
+ };
3128
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
3129
+ source: {
3130
+ path: string;
3131
+ start: number;
3132
+ end: number;
3133
+ hash: string;
3134
+ line: number;
3135
+ column: number;
3136
+ styleForm?: "pressable-state" | undefined;
3137
+ dependencies?: string[] | undefined;
3138
+ } | null;
3139
+ parentId: string | null;
3140
+ role: string | null;
3141
+ styles: Record<string, unknown>;
3142
+ editable: boolean;
3143
+ editReason: string | null;
3144
+ pressableState?: "pressed" | "rest" | undefined;
3145
+ accessibility?: {
3146
+ direction: "unknown" | "ltr" | "rtl";
3147
+ authoredLabel?: string | undefined;
3148
+ authoredHint?: string | undefined;
3149
+ accessible?: boolean | undefined;
3150
+ focusable?: boolean | undefined;
3151
+ hidden?: boolean | undefined;
3152
+ disabled?: boolean | undefined;
3153
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
3154
+ browser?: {
3155
+ focusOrder: number | null;
3156
+ name: string | null;
3157
+ focusOrderSource: "dom-sequential-estimate";
3158
+ contrast: {
3159
+ status: "measured" | "unavailable";
3160
+ ratio?: number | undefined;
3161
+ requiredRatio?: number | undefined;
3162
+ reason?: string | undefined;
3163
+ };
3164
+ } | undefined;
3165
+ } | undefined;
3166
+ textFit?: {
3167
+ status: "unavailable" | "supported";
3168
+ reason?: string | undefined;
3169
+ fullLineCount?: number | undefined;
3170
+ limitedLineCount?: number | undefined;
3171
+ fullHeight?: number | undefined;
3172
+ availableHeight?: number | undefined;
3173
+ } | undefined;
3174
+ authoredTextProps?: {
3175
+ fontSize?: number | undefined;
3176
+ lineHeight?: number | undefined;
3177
+ numberOfLines?: number | undefined;
3178
+ allowFontScaling?: boolean | undefined;
3179
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
3180
+ } | undefined;
3181
+ measuredLineCount?: number | undefined;
3182
+ }[];
3183
+ sessionId: string;
3184
+ revisions: Record<string, string>;
3185
+ generation: number;
3186
+ nativeTarget?: {
3187
+ platform: "android" | "ios";
3188
+ kind: "physical" | "emulator" | "simulator";
3189
+ targetId: string;
3190
+ } | undefined;
3191
+ webDiagnostics?: {
3192
+ nodes: Record<string, {
3193
+ clipping: "unknown" | "confirmed" | "clear";
3194
+ centerHitTest: "unknown" | "confirmed" | "clear";
3195
+ scrollOverflow: {
3196
+ horizontal: boolean;
3197
+ vertical: boolean;
3198
+ };
3199
+ paintOrder: number | null;
3200
+ fonts: {
3201
+ family: string;
3202
+ glyphCount: number;
3203
+ isCustom: boolean | null;
3204
+ }[];
3205
+ lineBoxCount: number | null;
3206
+ }>;
3207
+ warnings: {
3208
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
3209
+ message: string;
3210
+ elementId: string;
3211
+ severity: "confirmed" | "uncertain";
3212
+ }[];
3213
+ } | undefined;
3214
+ } | undefined;
3215
+ }, {
3216
+ status: "unavailable" | "unsupported" | "captured";
3217
+ results: {
3218
+ status: "unavailable" | "pass" | "fail";
3219
+ message: string;
3220
+ elementIds: string[];
3221
+ tolerance: number;
3222
+ constraintId: string;
3223
+ deviation: number | null;
3224
+ }[];
3225
+ error?: {
3226
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
3227
+ message: string;
3228
+ details?: unknown;
3229
+ } | undefined;
3230
+ snapshot?: {
3231
+ status: "stable" | "unstable";
3232
+ platform: "web" | "android" | "ios";
3233
+ schemaVersion: 1;
3234
+ scenarioId: string;
3235
+ profile: {
3236
+ window: {
3237
+ width: number;
3238
+ height: number;
3239
+ };
3240
+ pixelRatio: number;
3241
+ fontScale: number;
3242
+ insets: {
3243
+ top: number;
3244
+ right: number;
3245
+ bottom: number;
3246
+ left: number;
3247
+ };
3248
+ root: {
3249
+ x: number;
3250
+ y: number;
3251
+ width: number;
3252
+ height: number;
3253
+ };
3254
+ orientation: "portrait" | "landscape";
3255
+ };
3256
+ snapshotId: string;
3257
+ nodes: {
3258
+ id: string;
3259
+ rect: {
3260
+ x: number;
3261
+ y: number;
3262
+ width: number;
3263
+ height: number;
3264
+ };
3265
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
3266
+ source: {
3267
+ path: string;
3268
+ start: number;
3269
+ end: number;
3270
+ hash: string;
3271
+ line: number;
3272
+ column: number;
3273
+ styleForm?: "pressable-state" | undefined;
3274
+ dependencies?: string[] | undefined;
3275
+ } | null;
3276
+ parentId: string | null;
3277
+ role: string | null;
3278
+ styles: Record<string, unknown>;
3279
+ editable: boolean;
3280
+ editReason: string | null;
3281
+ pressableState?: "pressed" | "rest" | undefined;
3282
+ accessibility?: {
3283
+ direction: "unknown" | "ltr" | "rtl";
3284
+ authoredLabel?: string | undefined;
3285
+ authoredHint?: string | undefined;
3286
+ accessible?: boolean | undefined;
3287
+ focusable?: boolean | undefined;
3288
+ hidden?: boolean | undefined;
3289
+ disabled?: boolean | undefined;
3290
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
3291
+ browser?: {
3292
+ focusOrder: number | null;
3293
+ name: string | null;
3294
+ focusOrderSource: "dom-sequential-estimate";
3295
+ contrast: {
3296
+ status: "measured" | "unavailable";
3297
+ ratio?: number | undefined;
3298
+ requiredRatio?: number | undefined;
3299
+ reason?: string | undefined;
3300
+ };
3301
+ } | undefined;
3302
+ } | undefined;
3303
+ textFit?: {
3304
+ status: "unavailable" | "supported";
3305
+ reason?: string | undefined;
3306
+ fullLineCount?: number | undefined;
3307
+ limitedLineCount?: number | undefined;
3308
+ fullHeight?: number | undefined;
3309
+ availableHeight?: number | undefined;
3310
+ } | undefined;
3311
+ authoredTextProps?: {
3312
+ fontSize?: number | undefined;
3313
+ lineHeight?: number | undefined;
3314
+ numberOfLines?: number | undefined;
3315
+ allowFontScaling?: boolean | undefined;
3316
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
3317
+ } | undefined;
3318
+ measuredLineCount?: number | undefined;
3319
+ }[];
3320
+ sessionId: string;
3321
+ revisions: Record<string, string>;
3322
+ generation: number;
3323
+ nativeTarget?: {
3324
+ platform: "android" | "ios";
3325
+ kind: "physical" | "emulator" | "simulator";
3326
+ targetId: string;
3327
+ } | undefined;
3328
+ webDiagnostics?: {
3329
+ nodes: Record<string, {
3330
+ clipping: "unknown" | "confirmed" | "clear";
3331
+ centerHitTest: "unknown" | "confirmed" | "clear";
3332
+ scrollOverflow: {
3333
+ horizontal: boolean;
3334
+ vertical: boolean;
3335
+ };
3336
+ paintOrder: number | null;
3337
+ fonts: {
3338
+ family: string;
3339
+ glyphCount: number;
3340
+ isCustom: boolean | null;
3341
+ }[];
3342
+ lineBoxCount: number | null;
3343
+ }>;
3344
+ warnings: {
3345
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
3346
+ message: string;
3347
+ elementId: string;
3348
+ severity: "confirmed" | "uncertain";
3349
+ }[];
3350
+ } | undefined;
3351
+ } | undefined;
3352
+ }>;
3353
+ export type NativeSuggestionEvidence = z.infer<typeof NativeSuggestionEvidenceSchema>;
3354
+ /** Required callback interaction evidence, checked again after reload and on native. */
3355
+ export declare const InteractionRequirementSchema: z.ZodObject<{
3356
+ elementId: z.ZodString;
3357
+ pressed: z.ZodBoolean;
3358
+ }, "strict", z.ZodTypeAny, {
3359
+ elementId: string;
3360
+ pressed: boolean;
3361
+ }, {
3362
+ elementId: string;
3363
+ pressed: boolean;
3364
+ }>;
3365
+ export type InteractionRequirement = z.infer<typeof InteractionRequirementSchema>;
3366
+ /** Bounded native-driver failure output; a failed process is never acceptance evidence. */
3367
+ export declare const NativeScenarioFailureEvidenceSchema: z.ZodObject<{
3368
+ driver: z.ZodLiteral<"maestro">;
3369
+ message: z.ZodString;
3370
+ exitCode: z.ZodUnion<[z.ZodNumber, z.ZodString, z.ZodNull]>;
3371
+ signal: z.ZodNullable<z.ZodString>;
3372
+ terminated: z.ZodBoolean;
3373
+ stdout: z.ZodString;
3374
+ stderr: z.ZodString;
3375
+ outputTruncated: z.ZodBoolean;
3376
+ }, "strict", z.ZodTypeAny, {
3377
+ message: string;
3378
+ driver: "maestro";
3379
+ exitCode: string | number | null;
3380
+ signal: string | null;
3381
+ terminated: boolean;
3382
+ stdout: string;
3383
+ stderr: string;
3384
+ outputTruncated: boolean;
3385
+ }, {
3386
+ message: string;
3387
+ driver: "maestro";
3388
+ exitCode: string | number | null;
3389
+ signal: string | null;
3390
+ terminated: boolean;
3391
+ stdout: string;
3392
+ stderr: string;
3393
+ outputTruncated: boolean;
3394
+ }>;
3395
+ export type NativeScenarioFailureEvidence = z.infer<typeof NativeScenarioFailureEvidenceSchema>;