@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,1916 @@
1
+ import { type LayoutMutation } from './workflow.js';
2
+ import { z } from 'zod';
3
+ import { DeviceProfileSchema } from './geometry.js';
4
+ import { SourceRevisionsSchema } from './source.js';
5
+ import { RnStylePatchSchema } from './styles.js';
6
+ export declare const AuthoredTextPropsSchema: z.ZodObject<{
7
+ fontSize: z.ZodOptional<z.ZodNumber>;
8
+ lineHeight: z.ZodOptional<z.ZodNumber>;
9
+ numberOfLines: z.ZodOptional<z.ZodNumber>;
10
+ allowFontScaling: z.ZodOptional<z.ZodBoolean>;
11
+ ellipsizeMode: z.ZodOptional<z.ZodEnum<["head", "middle", "tail", "clip"]>>;
12
+ }, "strict", z.ZodTypeAny, {
13
+ fontSize?: number | undefined;
14
+ lineHeight?: number | undefined;
15
+ numberOfLines?: number | undefined;
16
+ allowFontScaling?: boolean | undefined;
17
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
18
+ }, {
19
+ fontSize?: number | undefined;
20
+ lineHeight?: number | undefined;
21
+ numberOfLines?: number | undefined;
22
+ allowFontScaling?: boolean | undefined;
23
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
24
+ }>;
25
+ export declare const TextMetricsSchema: z.ZodObject<{
26
+ lineCount: z.ZodNumber;
27
+ }, "strict", z.ZodTypeAny, {
28
+ lineCount: number;
29
+ }, {
30
+ lineCount: number;
31
+ }>;
32
+ export declare const DiagnosticEvidenceSchema: z.ZodEnum<["confirmed", "clear", "unknown"]>;
33
+ export declare const WebNodeDiagnosticsSchema: z.ZodObject<{
34
+ clipping: z.ZodEnum<["confirmed", "clear", "unknown"]>;
35
+ centerHitTest: z.ZodEnum<["confirmed", "clear", "unknown"]>;
36
+ scrollOverflow: z.ZodObject<{
37
+ horizontal: z.ZodBoolean;
38
+ vertical: z.ZodBoolean;
39
+ }, "strict", z.ZodTypeAny, {
40
+ horizontal: boolean;
41
+ vertical: boolean;
42
+ }, {
43
+ horizontal: boolean;
44
+ vertical: boolean;
45
+ }>;
46
+ paintOrder: z.ZodNullable<z.ZodNumber>;
47
+ fonts: z.ZodArray<z.ZodObject<{
48
+ family: z.ZodString;
49
+ glyphCount: z.ZodNumber;
50
+ isCustom: z.ZodNullable<z.ZodBoolean>;
51
+ }, "strict", z.ZodTypeAny, {
52
+ family: string;
53
+ glyphCount: number;
54
+ isCustom: boolean | null;
55
+ }, {
56
+ family: string;
57
+ glyphCount: number;
58
+ isCustom: boolean | null;
59
+ }>, "many">;
60
+ lineBoxCount: z.ZodNullable<z.ZodNumber>;
61
+ }, "strict", z.ZodTypeAny, {
62
+ clipping: "unknown" | "confirmed" | "clear";
63
+ centerHitTest: "unknown" | "confirmed" | "clear";
64
+ scrollOverflow: {
65
+ horizontal: boolean;
66
+ vertical: boolean;
67
+ };
68
+ paintOrder: number | null;
69
+ fonts: {
70
+ family: string;
71
+ glyphCount: number;
72
+ isCustom: boolean | null;
73
+ }[];
74
+ lineBoxCount: number | null;
75
+ }, {
76
+ clipping: "unknown" | "confirmed" | "clear";
77
+ centerHitTest: "unknown" | "confirmed" | "clear";
78
+ scrollOverflow: {
79
+ horizontal: boolean;
80
+ vertical: boolean;
81
+ };
82
+ paintOrder: number | null;
83
+ fonts: {
84
+ family: string;
85
+ glyphCount: number;
86
+ isCustom: boolean | null;
87
+ }[];
88
+ lineBoxCount: number | null;
89
+ }>;
90
+ export declare const WebDiagnosticsSchema: z.ZodObject<{
91
+ nodes: z.ZodRecord<z.ZodString, z.ZodObject<{
92
+ clipping: z.ZodEnum<["confirmed", "clear", "unknown"]>;
93
+ centerHitTest: z.ZodEnum<["confirmed", "clear", "unknown"]>;
94
+ scrollOverflow: z.ZodObject<{
95
+ horizontal: z.ZodBoolean;
96
+ vertical: z.ZodBoolean;
97
+ }, "strict", z.ZodTypeAny, {
98
+ horizontal: boolean;
99
+ vertical: boolean;
100
+ }, {
101
+ horizontal: boolean;
102
+ vertical: boolean;
103
+ }>;
104
+ paintOrder: z.ZodNullable<z.ZodNumber>;
105
+ fonts: z.ZodArray<z.ZodObject<{
106
+ family: z.ZodString;
107
+ glyphCount: z.ZodNumber;
108
+ isCustom: z.ZodNullable<z.ZodBoolean>;
109
+ }, "strict", z.ZodTypeAny, {
110
+ family: string;
111
+ glyphCount: number;
112
+ isCustom: boolean | null;
113
+ }, {
114
+ family: string;
115
+ glyphCount: number;
116
+ isCustom: boolean | null;
117
+ }>, "many">;
118
+ lineBoxCount: z.ZodNullable<z.ZodNumber>;
119
+ }, "strict", z.ZodTypeAny, {
120
+ clipping: "unknown" | "confirmed" | "clear";
121
+ centerHitTest: "unknown" | "confirmed" | "clear";
122
+ scrollOverflow: {
123
+ horizontal: boolean;
124
+ vertical: boolean;
125
+ };
126
+ paintOrder: number | null;
127
+ fonts: {
128
+ family: string;
129
+ glyphCount: number;
130
+ isCustom: boolean | null;
131
+ }[];
132
+ lineBoxCount: number | null;
133
+ }, {
134
+ clipping: "unknown" | "confirmed" | "clear";
135
+ centerHitTest: "unknown" | "confirmed" | "clear";
136
+ scrollOverflow: {
137
+ horizontal: boolean;
138
+ vertical: boolean;
139
+ };
140
+ paintOrder: number | null;
141
+ fonts: {
142
+ family: string;
143
+ glyphCount: number;
144
+ isCustom: boolean | null;
145
+ }[];
146
+ lineBoxCount: number | null;
147
+ }>>;
148
+ warnings: z.ZodArray<z.ZodObject<{
149
+ elementId: z.ZodString;
150
+ code: z.ZodEnum<["CLIPPED", "OCCLUDED", "FONT_LOAD_FAILED", "EVIDENCE_UNAVAILABLE"]>;
151
+ severity: z.ZodEnum<["confirmed", "uncertain"]>;
152
+ message: z.ZodString;
153
+ }, "strict", z.ZodTypeAny, {
154
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
155
+ message: string;
156
+ elementId: string;
157
+ severity: "confirmed" | "uncertain";
158
+ }, {
159
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
160
+ message: string;
161
+ elementId: string;
162
+ severity: "confirmed" | "uncertain";
163
+ }>, "many">;
164
+ }, "strict", z.ZodTypeAny, {
165
+ nodes: Record<string, {
166
+ clipping: "unknown" | "confirmed" | "clear";
167
+ centerHitTest: "unknown" | "confirmed" | "clear";
168
+ scrollOverflow: {
169
+ horizontal: boolean;
170
+ vertical: boolean;
171
+ };
172
+ paintOrder: number | null;
173
+ fonts: {
174
+ family: string;
175
+ glyphCount: number;
176
+ isCustom: boolean | null;
177
+ }[];
178
+ lineBoxCount: number | null;
179
+ }>;
180
+ warnings: {
181
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
182
+ message: string;
183
+ elementId: string;
184
+ severity: "confirmed" | "uncertain";
185
+ }[];
186
+ }, {
187
+ nodes: Record<string, {
188
+ clipping: "unknown" | "confirmed" | "clear";
189
+ centerHitTest: "unknown" | "confirmed" | "clear";
190
+ scrollOverflow: {
191
+ horizontal: boolean;
192
+ vertical: boolean;
193
+ };
194
+ paintOrder: number | null;
195
+ fonts: {
196
+ family: string;
197
+ glyphCount: number;
198
+ isCustom: boolean | null;
199
+ }[];
200
+ lineBoxCount: number | null;
201
+ }>;
202
+ warnings: {
203
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
204
+ message: string;
205
+ elementId: string;
206
+ severity: "confirmed" | "uncertain";
207
+ }[];
208
+ }>;
209
+ export type WebDiagnostics = z.infer<typeof WebDiagnosticsSchema>;
210
+ export declare const SpatialNodeSchema: z.ZodObject<{
211
+ id: z.ZodString;
212
+ parentId: z.ZodNullable<z.ZodString>;
213
+ kind: z.ZodEnum<["View", "Text", "Pressable", "TextInput", "ScrollView", "Image"]>;
214
+ role: z.ZodNullable<z.ZodString>;
215
+ rect: z.ZodObject<{
216
+ x: z.ZodNumber;
217
+ y: z.ZodNumber;
218
+ width: z.ZodNumber;
219
+ height: z.ZodNumber;
220
+ }, "strict", z.ZodTypeAny, {
221
+ x: number;
222
+ y: number;
223
+ width: number;
224
+ height: number;
225
+ }, {
226
+ x: number;
227
+ y: number;
228
+ width: number;
229
+ height: number;
230
+ }>;
231
+ styles: z.ZodRecord<z.ZodString, z.ZodUnknown>;
232
+ source: z.ZodNullable<z.ZodEffects<z.ZodObject<{
233
+ path: z.ZodString;
234
+ styleForm: z.ZodOptional<z.ZodLiteral<"pressable-state">>;
235
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
236
+ hash: z.ZodString;
237
+ start: z.ZodNumber;
238
+ end: z.ZodNumber;
239
+ line: z.ZodNumber;
240
+ column: z.ZodNumber;
241
+ }, "strict", z.ZodTypeAny, {
242
+ path: string;
243
+ start: number;
244
+ end: number;
245
+ hash: string;
246
+ line: number;
247
+ column: number;
248
+ styleForm?: "pressable-state" | undefined;
249
+ dependencies?: string[] | undefined;
250
+ }, {
251
+ path: string;
252
+ start: number;
253
+ end: number;
254
+ hash: string;
255
+ line: number;
256
+ column: number;
257
+ styleForm?: "pressable-state" | undefined;
258
+ dependencies?: string[] | undefined;
259
+ }>, {
260
+ path: string;
261
+ start: number;
262
+ end: number;
263
+ hash: string;
264
+ line: number;
265
+ column: number;
266
+ styleForm?: "pressable-state" | undefined;
267
+ dependencies?: string[] | undefined;
268
+ }, {
269
+ path: string;
270
+ start: number;
271
+ end: number;
272
+ hash: string;
273
+ line: number;
274
+ column: number;
275
+ styleForm?: "pressable-state" | undefined;
276
+ dependencies?: string[] | undefined;
277
+ }>>;
278
+ editable: z.ZodBoolean;
279
+ editReason: z.ZodNullable<z.ZodString>;
280
+ pressableState: z.ZodOptional<z.ZodEnum<["pressed", "rest"]>>;
281
+ accessibility: z.ZodOptional<z.ZodObject<{
282
+ authoredLabel: z.ZodOptional<z.ZodString>;
283
+ authoredHint: z.ZodOptional<z.ZodString>;
284
+ accessible: z.ZodOptional<z.ZodBoolean>;
285
+ focusable: z.ZodOptional<z.ZodBoolean>;
286
+ hidden: z.ZodOptional<z.ZodBoolean>;
287
+ disabled: z.ZodOptional<z.ZodBoolean>;
288
+ direction: z.ZodEnum<["ltr", "rtl", "unknown"]>;
289
+ directionSource: z.ZodOptional<z.ZodEnum<["authored", "native-global", "browser-computed", "unknown"]>>;
290
+ browser: z.ZodOptional<z.ZodObject<{
291
+ name: z.ZodNullable<z.ZodString>;
292
+ focusOrder: z.ZodNullable<z.ZodNumber>;
293
+ focusOrderSource: z.ZodLiteral<"dom-sequential-estimate">;
294
+ contrast: z.ZodEffects<z.ZodObject<{
295
+ status: z.ZodEnum<["measured", "unavailable"]>;
296
+ ratio: z.ZodOptional<z.ZodNumber>;
297
+ requiredRatio: z.ZodOptional<z.ZodNumber>;
298
+ reason: z.ZodOptional<z.ZodString>;
299
+ }, "strict", z.ZodTypeAny, {
300
+ status: "measured" | "unavailable";
301
+ ratio?: number | undefined;
302
+ requiredRatio?: number | undefined;
303
+ reason?: string | undefined;
304
+ }, {
305
+ status: "measured" | "unavailable";
306
+ ratio?: number | undefined;
307
+ requiredRatio?: number | undefined;
308
+ reason?: string | undefined;
309
+ }>, {
310
+ status: "measured" | "unavailable";
311
+ ratio?: number | undefined;
312
+ requiredRatio?: number | undefined;
313
+ reason?: string | undefined;
314
+ }, {
315
+ status: "measured" | "unavailable";
316
+ ratio?: number | undefined;
317
+ requiredRatio?: number | undefined;
318
+ reason?: string | undefined;
319
+ }>;
320
+ }, "strict", z.ZodTypeAny, {
321
+ focusOrder: number | null;
322
+ name: string | null;
323
+ focusOrderSource: "dom-sequential-estimate";
324
+ contrast: {
325
+ status: "measured" | "unavailable";
326
+ ratio?: number | undefined;
327
+ requiredRatio?: number | undefined;
328
+ reason?: string | undefined;
329
+ };
330
+ }, {
331
+ focusOrder: number | null;
332
+ name: string | null;
333
+ focusOrderSource: "dom-sequential-estimate";
334
+ contrast: {
335
+ status: "measured" | "unavailable";
336
+ ratio?: number | undefined;
337
+ requiredRatio?: number | undefined;
338
+ reason?: string | undefined;
339
+ };
340
+ }>>;
341
+ }, "strict", z.ZodTypeAny, {
342
+ direction: "unknown" | "ltr" | "rtl";
343
+ authoredLabel?: string | undefined;
344
+ authoredHint?: string | undefined;
345
+ accessible?: boolean | undefined;
346
+ focusable?: boolean | undefined;
347
+ hidden?: boolean | undefined;
348
+ disabled?: boolean | undefined;
349
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
350
+ browser?: {
351
+ focusOrder: number | null;
352
+ name: string | null;
353
+ focusOrderSource: "dom-sequential-estimate";
354
+ contrast: {
355
+ status: "measured" | "unavailable";
356
+ ratio?: number | undefined;
357
+ requiredRatio?: number | undefined;
358
+ reason?: string | undefined;
359
+ };
360
+ } | undefined;
361
+ }, {
362
+ direction: "unknown" | "ltr" | "rtl";
363
+ authoredLabel?: string | undefined;
364
+ authoredHint?: string | undefined;
365
+ accessible?: boolean | undefined;
366
+ focusable?: boolean | undefined;
367
+ hidden?: boolean | undefined;
368
+ disabled?: boolean | undefined;
369
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
370
+ browser?: {
371
+ focusOrder: number | null;
372
+ name: string | null;
373
+ focusOrderSource: "dom-sequential-estimate";
374
+ contrast: {
375
+ status: "measured" | "unavailable";
376
+ ratio?: number | undefined;
377
+ requiredRatio?: number | undefined;
378
+ reason?: string | undefined;
379
+ };
380
+ } | undefined;
381
+ }>>;
382
+ textFit: z.ZodOptional<z.ZodObject<{
383
+ status: z.ZodEnum<["supported", "unavailable"]>;
384
+ fullLineCount: z.ZodOptional<z.ZodNumber>;
385
+ limitedLineCount: z.ZodOptional<z.ZodNumber>;
386
+ fullHeight: z.ZodOptional<z.ZodNumber>;
387
+ availableHeight: z.ZodOptional<z.ZodNumber>;
388
+ reason: z.ZodOptional<z.ZodString>;
389
+ }, "strict", z.ZodTypeAny, {
390
+ status: "unavailable" | "supported";
391
+ reason?: string | undefined;
392
+ fullLineCount?: number | undefined;
393
+ limitedLineCount?: number | undefined;
394
+ fullHeight?: number | undefined;
395
+ availableHeight?: number | undefined;
396
+ }, {
397
+ status: "unavailable" | "supported";
398
+ reason?: string | undefined;
399
+ fullLineCount?: number | undefined;
400
+ limitedLineCount?: number | undefined;
401
+ fullHeight?: number | undefined;
402
+ availableHeight?: number | undefined;
403
+ }>>;
404
+ authoredTextProps: z.ZodOptional<z.ZodObject<{
405
+ fontSize: z.ZodOptional<z.ZodNumber>;
406
+ lineHeight: z.ZodOptional<z.ZodNumber>;
407
+ numberOfLines: z.ZodOptional<z.ZodNumber>;
408
+ allowFontScaling: z.ZodOptional<z.ZodBoolean>;
409
+ ellipsizeMode: z.ZodOptional<z.ZodEnum<["head", "middle", "tail", "clip"]>>;
410
+ }, "strict", z.ZodTypeAny, {
411
+ fontSize?: number | undefined;
412
+ lineHeight?: number | undefined;
413
+ numberOfLines?: number | undefined;
414
+ allowFontScaling?: boolean | undefined;
415
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
416
+ }, {
417
+ fontSize?: number | undefined;
418
+ lineHeight?: number | undefined;
419
+ numberOfLines?: number | undefined;
420
+ allowFontScaling?: boolean | undefined;
421
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
422
+ }>>;
423
+ measuredLineCount: z.ZodOptional<z.ZodNumber>;
424
+ }, "strict", z.ZodTypeAny, {
425
+ id: string;
426
+ rect: {
427
+ x: number;
428
+ y: number;
429
+ width: number;
430
+ height: number;
431
+ };
432
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
433
+ source: {
434
+ path: string;
435
+ start: number;
436
+ end: number;
437
+ hash: string;
438
+ line: number;
439
+ column: number;
440
+ styleForm?: "pressable-state" | undefined;
441
+ dependencies?: string[] | undefined;
442
+ } | null;
443
+ parentId: string | null;
444
+ role: string | null;
445
+ styles: Record<string, unknown>;
446
+ editable: boolean;
447
+ editReason: string | null;
448
+ pressableState?: "pressed" | "rest" | undefined;
449
+ accessibility?: {
450
+ direction: "unknown" | "ltr" | "rtl";
451
+ authoredLabel?: string | undefined;
452
+ authoredHint?: string | undefined;
453
+ accessible?: boolean | undefined;
454
+ focusable?: boolean | undefined;
455
+ hidden?: boolean | undefined;
456
+ disabled?: boolean | undefined;
457
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
458
+ browser?: {
459
+ focusOrder: number | null;
460
+ name: string | null;
461
+ focusOrderSource: "dom-sequential-estimate";
462
+ contrast: {
463
+ status: "measured" | "unavailable";
464
+ ratio?: number | undefined;
465
+ requiredRatio?: number | undefined;
466
+ reason?: string | undefined;
467
+ };
468
+ } | undefined;
469
+ } | undefined;
470
+ textFit?: {
471
+ status: "unavailable" | "supported";
472
+ reason?: string | undefined;
473
+ fullLineCount?: number | undefined;
474
+ limitedLineCount?: number | undefined;
475
+ fullHeight?: number | undefined;
476
+ availableHeight?: number | undefined;
477
+ } | undefined;
478
+ authoredTextProps?: {
479
+ fontSize?: number | undefined;
480
+ lineHeight?: number | undefined;
481
+ numberOfLines?: number | undefined;
482
+ allowFontScaling?: boolean | undefined;
483
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
484
+ } | undefined;
485
+ measuredLineCount?: number | undefined;
486
+ }, {
487
+ id: string;
488
+ rect: {
489
+ x: number;
490
+ y: number;
491
+ width: number;
492
+ height: number;
493
+ };
494
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
495
+ source: {
496
+ path: string;
497
+ start: number;
498
+ end: number;
499
+ hash: string;
500
+ line: number;
501
+ column: number;
502
+ styleForm?: "pressable-state" | undefined;
503
+ dependencies?: string[] | undefined;
504
+ } | null;
505
+ parentId: string | null;
506
+ role: string | null;
507
+ styles: Record<string, unknown>;
508
+ editable: boolean;
509
+ editReason: string | null;
510
+ pressableState?: "pressed" | "rest" | undefined;
511
+ accessibility?: {
512
+ direction: "unknown" | "ltr" | "rtl";
513
+ authoredLabel?: string | undefined;
514
+ authoredHint?: string | undefined;
515
+ accessible?: boolean | undefined;
516
+ focusable?: boolean | undefined;
517
+ hidden?: boolean | undefined;
518
+ disabled?: boolean | undefined;
519
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
520
+ browser?: {
521
+ focusOrder: number | null;
522
+ name: string | null;
523
+ focusOrderSource: "dom-sequential-estimate";
524
+ contrast: {
525
+ status: "measured" | "unavailable";
526
+ ratio?: number | undefined;
527
+ requiredRatio?: number | undefined;
528
+ reason?: string | undefined;
529
+ };
530
+ } | undefined;
531
+ } | undefined;
532
+ textFit?: {
533
+ status: "unavailable" | "supported";
534
+ reason?: string | undefined;
535
+ fullLineCount?: number | undefined;
536
+ limitedLineCount?: number | undefined;
537
+ fullHeight?: number | undefined;
538
+ availableHeight?: number | undefined;
539
+ } | undefined;
540
+ authoredTextProps?: {
541
+ fontSize?: number | undefined;
542
+ lineHeight?: number | undefined;
543
+ numberOfLines?: number | undefined;
544
+ allowFontScaling?: boolean | undefined;
545
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
546
+ } | undefined;
547
+ measuredLineCount?: number | undefined;
548
+ }>;
549
+ export type SpatialNode = z.infer<typeof SpatialNodeSchema>;
550
+ export declare const SpatialSnapshotSchema: z.ZodEffects<z.ZodObject<{
551
+ schemaVersion: z.ZodLiteral<1>;
552
+ sessionId: z.ZodString;
553
+ snapshotId: z.ZodString;
554
+ platform: z.ZodEnum<["web", "android", "ios"]>;
555
+ scenarioId: z.ZodString;
556
+ profile: z.ZodObject<{
557
+ window: z.ZodObject<{
558
+ width: z.ZodNumber;
559
+ height: z.ZodNumber;
560
+ }, "strict", z.ZodTypeAny, {
561
+ width: number;
562
+ height: number;
563
+ }, {
564
+ width: number;
565
+ height: number;
566
+ }>;
567
+ pixelRatio: z.ZodNumber;
568
+ fontScale: z.ZodNumber;
569
+ insets: z.ZodObject<{
570
+ top: z.ZodNumber;
571
+ right: z.ZodNumber;
572
+ bottom: z.ZodNumber;
573
+ left: z.ZodNumber;
574
+ }, "strict", z.ZodTypeAny, {
575
+ top: number;
576
+ right: number;
577
+ bottom: number;
578
+ left: number;
579
+ }, {
580
+ top: number;
581
+ right: number;
582
+ bottom: number;
583
+ left: number;
584
+ }>;
585
+ root: z.ZodObject<{
586
+ x: z.ZodNumber;
587
+ y: z.ZodNumber;
588
+ width: z.ZodNumber;
589
+ height: z.ZodNumber;
590
+ }, "strict", z.ZodTypeAny, {
591
+ x: number;
592
+ y: number;
593
+ width: number;
594
+ height: number;
595
+ }, {
596
+ x: number;
597
+ y: number;
598
+ width: number;
599
+ height: number;
600
+ }>;
601
+ orientation: z.ZodEnum<["portrait", "landscape"]>;
602
+ }, "strict", z.ZodTypeAny, {
603
+ window: {
604
+ width: number;
605
+ height: number;
606
+ };
607
+ pixelRatio: number;
608
+ fontScale: number;
609
+ insets: {
610
+ top: number;
611
+ right: number;
612
+ bottom: number;
613
+ left: number;
614
+ };
615
+ root: {
616
+ x: number;
617
+ y: number;
618
+ width: number;
619
+ height: number;
620
+ };
621
+ orientation: "portrait" | "landscape";
622
+ }, {
623
+ window: {
624
+ width: number;
625
+ height: number;
626
+ };
627
+ pixelRatio: number;
628
+ fontScale: number;
629
+ insets: {
630
+ top: number;
631
+ right: number;
632
+ bottom: number;
633
+ left: number;
634
+ };
635
+ root: {
636
+ x: number;
637
+ y: number;
638
+ width: number;
639
+ height: number;
640
+ };
641
+ orientation: "portrait" | "landscape";
642
+ }>;
643
+ revisions: z.ZodRecord<z.ZodString, z.ZodString>;
644
+ nodes: z.ZodArray<z.ZodObject<{
645
+ id: z.ZodString;
646
+ parentId: z.ZodNullable<z.ZodString>;
647
+ kind: z.ZodEnum<["View", "Text", "Pressable", "TextInput", "ScrollView", "Image"]>;
648
+ role: z.ZodNullable<z.ZodString>;
649
+ rect: z.ZodObject<{
650
+ x: z.ZodNumber;
651
+ y: z.ZodNumber;
652
+ width: z.ZodNumber;
653
+ height: z.ZodNumber;
654
+ }, "strict", z.ZodTypeAny, {
655
+ x: number;
656
+ y: number;
657
+ width: number;
658
+ height: number;
659
+ }, {
660
+ x: number;
661
+ y: number;
662
+ width: number;
663
+ height: number;
664
+ }>;
665
+ styles: z.ZodRecord<z.ZodString, z.ZodUnknown>;
666
+ source: z.ZodNullable<z.ZodEffects<z.ZodObject<{
667
+ path: z.ZodString;
668
+ styleForm: z.ZodOptional<z.ZodLiteral<"pressable-state">>;
669
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
670
+ hash: z.ZodString;
671
+ start: z.ZodNumber;
672
+ end: z.ZodNumber;
673
+ line: z.ZodNumber;
674
+ column: z.ZodNumber;
675
+ }, "strict", z.ZodTypeAny, {
676
+ path: string;
677
+ start: number;
678
+ end: number;
679
+ hash: string;
680
+ line: number;
681
+ column: number;
682
+ styleForm?: "pressable-state" | undefined;
683
+ dependencies?: string[] | undefined;
684
+ }, {
685
+ path: string;
686
+ start: number;
687
+ end: number;
688
+ hash: string;
689
+ line: number;
690
+ column: number;
691
+ styleForm?: "pressable-state" | undefined;
692
+ dependencies?: string[] | undefined;
693
+ }>, {
694
+ path: string;
695
+ start: number;
696
+ end: number;
697
+ hash: string;
698
+ line: number;
699
+ column: number;
700
+ styleForm?: "pressable-state" | undefined;
701
+ dependencies?: string[] | undefined;
702
+ }, {
703
+ path: string;
704
+ start: number;
705
+ end: number;
706
+ hash: string;
707
+ line: number;
708
+ column: number;
709
+ styleForm?: "pressable-state" | undefined;
710
+ dependencies?: string[] | undefined;
711
+ }>>;
712
+ editable: z.ZodBoolean;
713
+ editReason: z.ZodNullable<z.ZodString>;
714
+ pressableState: z.ZodOptional<z.ZodEnum<["pressed", "rest"]>>;
715
+ accessibility: z.ZodOptional<z.ZodObject<{
716
+ authoredLabel: z.ZodOptional<z.ZodString>;
717
+ authoredHint: z.ZodOptional<z.ZodString>;
718
+ accessible: z.ZodOptional<z.ZodBoolean>;
719
+ focusable: z.ZodOptional<z.ZodBoolean>;
720
+ hidden: z.ZodOptional<z.ZodBoolean>;
721
+ disabled: z.ZodOptional<z.ZodBoolean>;
722
+ direction: z.ZodEnum<["ltr", "rtl", "unknown"]>;
723
+ directionSource: z.ZodOptional<z.ZodEnum<["authored", "native-global", "browser-computed", "unknown"]>>;
724
+ browser: z.ZodOptional<z.ZodObject<{
725
+ name: z.ZodNullable<z.ZodString>;
726
+ focusOrder: z.ZodNullable<z.ZodNumber>;
727
+ focusOrderSource: z.ZodLiteral<"dom-sequential-estimate">;
728
+ contrast: z.ZodEffects<z.ZodObject<{
729
+ status: z.ZodEnum<["measured", "unavailable"]>;
730
+ ratio: z.ZodOptional<z.ZodNumber>;
731
+ requiredRatio: z.ZodOptional<z.ZodNumber>;
732
+ reason: z.ZodOptional<z.ZodString>;
733
+ }, "strict", z.ZodTypeAny, {
734
+ status: "measured" | "unavailable";
735
+ ratio?: number | undefined;
736
+ requiredRatio?: number | undefined;
737
+ reason?: string | undefined;
738
+ }, {
739
+ status: "measured" | "unavailable";
740
+ ratio?: number | undefined;
741
+ requiredRatio?: number | undefined;
742
+ reason?: string | undefined;
743
+ }>, {
744
+ status: "measured" | "unavailable";
745
+ ratio?: number | undefined;
746
+ requiredRatio?: number | undefined;
747
+ reason?: string | undefined;
748
+ }, {
749
+ status: "measured" | "unavailable";
750
+ ratio?: number | undefined;
751
+ requiredRatio?: number | undefined;
752
+ reason?: string | undefined;
753
+ }>;
754
+ }, "strict", z.ZodTypeAny, {
755
+ focusOrder: number | null;
756
+ name: string | null;
757
+ focusOrderSource: "dom-sequential-estimate";
758
+ contrast: {
759
+ status: "measured" | "unavailable";
760
+ ratio?: number | undefined;
761
+ requiredRatio?: number | undefined;
762
+ reason?: string | undefined;
763
+ };
764
+ }, {
765
+ focusOrder: number | null;
766
+ name: string | null;
767
+ focusOrderSource: "dom-sequential-estimate";
768
+ contrast: {
769
+ status: "measured" | "unavailable";
770
+ ratio?: number | undefined;
771
+ requiredRatio?: number | undefined;
772
+ reason?: string | undefined;
773
+ };
774
+ }>>;
775
+ }, "strict", z.ZodTypeAny, {
776
+ direction: "unknown" | "ltr" | "rtl";
777
+ authoredLabel?: string | undefined;
778
+ authoredHint?: string | undefined;
779
+ accessible?: boolean | undefined;
780
+ focusable?: boolean | undefined;
781
+ hidden?: boolean | undefined;
782
+ disabled?: boolean | undefined;
783
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
784
+ browser?: {
785
+ focusOrder: number | null;
786
+ name: string | null;
787
+ focusOrderSource: "dom-sequential-estimate";
788
+ contrast: {
789
+ status: "measured" | "unavailable";
790
+ ratio?: number | undefined;
791
+ requiredRatio?: number | undefined;
792
+ reason?: string | undefined;
793
+ };
794
+ } | undefined;
795
+ }, {
796
+ direction: "unknown" | "ltr" | "rtl";
797
+ authoredLabel?: string | undefined;
798
+ authoredHint?: string | undefined;
799
+ accessible?: boolean | undefined;
800
+ focusable?: boolean | undefined;
801
+ hidden?: boolean | undefined;
802
+ disabled?: boolean | undefined;
803
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
804
+ browser?: {
805
+ focusOrder: number | null;
806
+ name: string | null;
807
+ focusOrderSource: "dom-sequential-estimate";
808
+ contrast: {
809
+ status: "measured" | "unavailable";
810
+ ratio?: number | undefined;
811
+ requiredRatio?: number | undefined;
812
+ reason?: string | undefined;
813
+ };
814
+ } | undefined;
815
+ }>>;
816
+ textFit: z.ZodOptional<z.ZodObject<{
817
+ status: z.ZodEnum<["supported", "unavailable"]>;
818
+ fullLineCount: z.ZodOptional<z.ZodNumber>;
819
+ limitedLineCount: z.ZodOptional<z.ZodNumber>;
820
+ fullHeight: z.ZodOptional<z.ZodNumber>;
821
+ availableHeight: z.ZodOptional<z.ZodNumber>;
822
+ reason: z.ZodOptional<z.ZodString>;
823
+ }, "strict", z.ZodTypeAny, {
824
+ status: "unavailable" | "supported";
825
+ reason?: string | undefined;
826
+ fullLineCount?: number | undefined;
827
+ limitedLineCount?: number | undefined;
828
+ fullHeight?: number | undefined;
829
+ availableHeight?: number | undefined;
830
+ }, {
831
+ status: "unavailable" | "supported";
832
+ reason?: string | undefined;
833
+ fullLineCount?: number | undefined;
834
+ limitedLineCount?: number | undefined;
835
+ fullHeight?: number | undefined;
836
+ availableHeight?: number | undefined;
837
+ }>>;
838
+ authoredTextProps: z.ZodOptional<z.ZodObject<{
839
+ fontSize: z.ZodOptional<z.ZodNumber>;
840
+ lineHeight: z.ZodOptional<z.ZodNumber>;
841
+ numberOfLines: z.ZodOptional<z.ZodNumber>;
842
+ allowFontScaling: z.ZodOptional<z.ZodBoolean>;
843
+ ellipsizeMode: z.ZodOptional<z.ZodEnum<["head", "middle", "tail", "clip"]>>;
844
+ }, "strict", z.ZodTypeAny, {
845
+ fontSize?: number | undefined;
846
+ lineHeight?: number | undefined;
847
+ numberOfLines?: number | undefined;
848
+ allowFontScaling?: boolean | undefined;
849
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
850
+ }, {
851
+ fontSize?: number | undefined;
852
+ lineHeight?: number | undefined;
853
+ numberOfLines?: number | undefined;
854
+ allowFontScaling?: boolean | undefined;
855
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
856
+ }>>;
857
+ measuredLineCount: z.ZodOptional<z.ZodNumber>;
858
+ }, "strict", z.ZodTypeAny, {
859
+ id: string;
860
+ rect: {
861
+ x: number;
862
+ y: number;
863
+ width: number;
864
+ height: number;
865
+ };
866
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
867
+ source: {
868
+ path: string;
869
+ start: number;
870
+ end: number;
871
+ hash: string;
872
+ line: number;
873
+ column: number;
874
+ styleForm?: "pressable-state" | undefined;
875
+ dependencies?: string[] | undefined;
876
+ } | null;
877
+ parentId: string | null;
878
+ role: string | null;
879
+ styles: Record<string, unknown>;
880
+ editable: boolean;
881
+ editReason: string | null;
882
+ pressableState?: "pressed" | "rest" | undefined;
883
+ accessibility?: {
884
+ direction: "unknown" | "ltr" | "rtl";
885
+ authoredLabel?: string | undefined;
886
+ authoredHint?: string | undefined;
887
+ accessible?: boolean | undefined;
888
+ focusable?: boolean | undefined;
889
+ hidden?: boolean | undefined;
890
+ disabled?: boolean | undefined;
891
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
892
+ browser?: {
893
+ focusOrder: number | null;
894
+ name: string | null;
895
+ focusOrderSource: "dom-sequential-estimate";
896
+ contrast: {
897
+ status: "measured" | "unavailable";
898
+ ratio?: number | undefined;
899
+ requiredRatio?: number | undefined;
900
+ reason?: string | undefined;
901
+ };
902
+ } | undefined;
903
+ } | undefined;
904
+ textFit?: {
905
+ status: "unavailable" | "supported";
906
+ reason?: string | undefined;
907
+ fullLineCount?: number | undefined;
908
+ limitedLineCount?: number | undefined;
909
+ fullHeight?: number | undefined;
910
+ availableHeight?: number | undefined;
911
+ } | undefined;
912
+ authoredTextProps?: {
913
+ fontSize?: number | undefined;
914
+ lineHeight?: number | undefined;
915
+ numberOfLines?: number | undefined;
916
+ allowFontScaling?: boolean | undefined;
917
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
918
+ } | undefined;
919
+ measuredLineCount?: number | undefined;
920
+ }, {
921
+ id: string;
922
+ rect: {
923
+ x: number;
924
+ y: number;
925
+ width: number;
926
+ height: number;
927
+ };
928
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
929
+ source: {
930
+ path: string;
931
+ start: number;
932
+ end: number;
933
+ hash: string;
934
+ line: number;
935
+ column: number;
936
+ styleForm?: "pressable-state" | undefined;
937
+ dependencies?: string[] | undefined;
938
+ } | null;
939
+ parentId: string | null;
940
+ role: string | null;
941
+ styles: Record<string, unknown>;
942
+ editable: boolean;
943
+ editReason: string | null;
944
+ pressableState?: "pressed" | "rest" | undefined;
945
+ accessibility?: {
946
+ direction: "unknown" | "ltr" | "rtl";
947
+ authoredLabel?: string | undefined;
948
+ authoredHint?: string | undefined;
949
+ accessible?: boolean | undefined;
950
+ focusable?: boolean | undefined;
951
+ hidden?: boolean | undefined;
952
+ disabled?: boolean | undefined;
953
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
954
+ browser?: {
955
+ focusOrder: number | null;
956
+ name: string | null;
957
+ focusOrderSource: "dom-sequential-estimate";
958
+ contrast: {
959
+ status: "measured" | "unavailable";
960
+ ratio?: number | undefined;
961
+ requiredRatio?: number | undefined;
962
+ reason?: string | undefined;
963
+ };
964
+ } | undefined;
965
+ } | undefined;
966
+ textFit?: {
967
+ status: "unavailable" | "supported";
968
+ reason?: string | undefined;
969
+ fullLineCount?: number | undefined;
970
+ limitedLineCount?: number | undefined;
971
+ fullHeight?: number | undefined;
972
+ availableHeight?: number | undefined;
973
+ } | undefined;
974
+ authoredTextProps?: {
975
+ fontSize?: number | undefined;
976
+ lineHeight?: number | undefined;
977
+ numberOfLines?: number | undefined;
978
+ allowFontScaling?: boolean | undefined;
979
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
980
+ } | undefined;
981
+ measuredLineCount?: number | undefined;
982
+ }>, "many">;
983
+ status: z.ZodEnum<["stable", "unstable"]>;
984
+ generation: z.ZodNumber;
985
+ nativeTarget: z.ZodOptional<z.ZodObject<{
986
+ targetId: z.ZodString;
987
+ platform: z.ZodEnum<["android", "ios"]>;
988
+ kind: z.ZodEnum<["physical", "emulator", "simulator"]>;
989
+ }, "strict", z.ZodTypeAny, {
990
+ platform: "android" | "ios";
991
+ kind: "physical" | "emulator" | "simulator";
992
+ targetId: string;
993
+ }, {
994
+ platform: "android" | "ios";
995
+ kind: "physical" | "emulator" | "simulator";
996
+ targetId: string;
997
+ }>>;
998
+ webDiagnostics: z.ZodOptional<z.ZodObject<{
999
+ nodes: z.ZodRecord<z.ZodString, z.ZodObject<{
1000
+ clipping: z.ZodEnum<["confirmed", "clear", "unknown"]>;
1001
+ centerHitTest: z.ZodEnum<["confirmed", "clear", "unknown"]>;
1002
+ scrollOverflow: z.ZodObject<{
1003
+ horizontal: z.ZodBoolean;
1004
+ vertical: z.ZodBoolean;
1005
+ }, "strict", z.ZodTypeAny, {
1006
+ horizontal: boolean;
1007
+ vertical: boolean;
1008
+ }, {
1009
+ horizontal: boolean;
1010
+ vertical: boolean;
1011
+ }>;
1012
+ paintOrder: z.ZodNullable<z.ZodNumber>;
1013
+ fonts: z.ZodArray<z.ZodObject<{
1014
+ family: z.ZodString;
1015
+ glyphCount: z.ZodNumber;
1016
+ isCustom: z.ZodNullable<z.ZodBoolean>;
1017
+ }, "strict", z.ZodTypeAny, {
1018
+ family: string;
1019
+ glyphCount: number;
1020
+ isCustom: boolean | null;
1021
+ }, {
1022
+ family: string;
1023
+ glyphCount: number;
1024
+ isCustom: boolean | null;
1025
+ }>, "many">;
1026
+ lineBoxCount: z.ZodNullable<z.ZodNumber>;
1027
+ }, "strict", z.ZodTypeAny, {
1028
+ clipping: "unknown" | "confirmed" | "clear";
1029
+ centerHitTest: "unknown" | "confirmed" | "clear";
1030
+ scrollOverflow: {
1031
+ horizontal: boolean;
1032
+ vertical: boolean;
1033
+ };
1034
+ paintOrder: number | null;
1035
+ fonts: {
1036
+ family: string;
1037
+ glyphCount: number;
1038
+ isCustom: boolean | null;
1039
+ }[];
1040
+ lineBoxCount: number | null;
1041
+ }, {
1042
+ clipping: "unknown" | "confirmed" | "clear";
1043
+ centerHitTest: "unknown" | "confirmed" | "clear";
1044
+ scrollOverflow: {
1045
+ horizontal: boolean;
1046
+ vertical: boolean;
1047
+ };
1048
+ paintOrder: number | null;
1049
+ fonts: {
1050
+ family: string;
1051
+ glyphCount: number;
1052
+ isCustom: boolean | null;
1053
+ }[];
1054
+ lineBoxCount: number | null;
1055
+ }>>;
1056
+ warnings: z.ZodArray<z.ZodObject<{
1057
+ elementId: z.ZodString;
1058
+ code: z.ZodEnum<["CLIPPED", "OCCLUDED", "FONT_LOAD_FAILED", "EVIDENCE_UNAVAILABLE"]>;
1059
+ severity: z.ZodEnum<["confirmed", "uncertain"]>;
1060
+ message: z.ZodString;
1061
+ }, "strict", z.ZodTypeAny, {
1062
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
1063
+ message: string;
1064
+ elementId: string;
1065
+ severity: "confirmed" | "uncertain";
1066
+ }, {
1067
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
1068
+ message: string;
1069
+ elementId: string;
1070
+ severity: "confirmed" | "uncertain";
1071
+ }>, "many">;
1072
+ }, "strict", z.ZodTypeAny, {
1073
+ nodes: Record<string, {
1074
+ clipping: "unknown" | "confirmed" | "clear";
1075
+ centerHitTest: "unknown" | "confirmed" | "clear";
1076
+ scrollOverflow: {
1077
+ horizontal: boolean;
1078
+ vertical: boolean;
1079
+ };
1080
+ paintOrder: number | null;
1081
+ fonts: {
1082
+ family: string;
1083
+ glyphCount: number;
1084
+ isCustom: boolean | null;
1085
+ }[];
1086
+ lineBoxCount: number | null;
1087
+ }>;
1088
+ warnings: {
1089
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
1090
+ message: string;
1091
+ elementId: string;
1092
+ severity: "confirmed" | "uncertain";
1093
+ }[];
1094
+ }, {
1095
+ nodes: Record<string, {
1096
+ clipping: "unknown" | "confirmed" | "clear";
1097
+ centerHitTest: "unknown" | "confirmed" | "clear";
1098
+ scrollOverflow: {
1099
+ horizontal: boolean;
1100
+ vertical: boolean;
1101
+ };
1102
+ paintOrder: number | null;
1103
+ fonts: {
1104
+ family: string;
1105
+ glyphCount: number;
1106
+ isCustom: boolean | null;
1107
+ }[];
1108
+ lineBoxCount: number | null;
1109
+ }>;
1110
+ warnings: {
1111
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
1112
+ message: string;
1113
+ elementId: string;
1114
+ severity: "confirmed" | "uncertain";
1115
+ }[];
1116
+ }>>;
1117
+ }, "strict", z.ZodTypeAny, {
1118
+ status: "stable" | "unstable";
1119
+ platform: "web" | "android" | "ios";
1120
+ schemaVersion: 1;
1121
+ scenarioId: string;
1122
+ profile: {
1123
+ window: {
1124
+ width: number;
1125
+ height: number;
1126
+ };
1127
+ pixelRatio: number;
1128
+ fontScale: number;
1129
+ insets: {
1130
+ top: number;
1131
+ right: number;
1132
+ bottom: number;
1133
+ left: number;
1134
+ };
1135
+ root: {
1136
+ x: number;
1137
+ y: number;
1138
+ width: number;
1139
+ height: number;
1140
+ };
1141
+ orientation: "portrait" | "landscape";
1142
+ };
1143
+ snapshotId: string;
1144
+ nodes: {
1145
+ id: string;
1146
+ rect: {
1147
+ x: number;
1148
+ y: number;
1149
+ width: number;
1150
+ height: number;
1151
+ };
1152
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
1153
+ source: {
1154
+ path: string;
1155
+ start: number;
1156
+ end: number;
1157
+ hash: string;
1158
+ line: number;
1159
+ column: number;
1160
+ styleForm?: "pressable-state" | undefined;
1161
+ dependencies?: string[] | undefined;
1162
+ } | null;
1163
+ parentId: string | null;
1164
+ role: string | null;
1165
+ styles: Record<string, unknown>;
1166
+ editable: boolean;
1167
+ editReason: string | null;
1168
+ pressableState?: "pressed" | "rest" | undefined;
1169
+ accessibility?: {
1170
+ direction: "unknown" | "ltr" | "rtl";
1171
+ authoredLabel?: string | undefined;
1172
+ authoredHint?: string | undefined;
1173
+ accessible?: boolean | undefined;
1174
+ focusable?: boolean | undefined;
1175
+ hidden?: boolean | undefined;
1176
+ disabled?: boolean | undefined;
1177
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
1178
+ browser?: {
1179
+ focusOrder: number | null;
1180
+ name: string | null;
1181
+ focusOrderSource: "dom-sequential-estimate";
1182
+ contrast: {
1183
+ status: "measured" | "unavailable";
1184
+ ratio?: number | undefined;
1185
+ requiredRatio?: number | undefined;
1186
+ reason?: string | undefined;
1187
+ };
1188
+ } | undefined;
1189
+ } | undefined;
1190
+ textFit?: {
1191
+ status: "unavailable" | "supported";
1192
+ reason?: string | undefined;
1193
+ fullLineCount?: number | undefined;
1194
+ limitedLineCount?: number | undefined;
1195
+ fullHeight?: number | undefined;
1196
+ availableHeight?: number | undefined;
1197
+ } | undefined;
1198
+ authoredTextProps?: {
1199
+ fontSize?: number | undefined;
1200
+ lineHeight?: number | undefined;
1201
+ numberOfLines?: number | undefined;
1202
+ allowFontScaling?: boolean | undefined;
1203
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
1204
+ } | undefined;
1205
+ measuredLineCount?: number | undefined;
1206
+ }[];
1207
+ sessionId: string;
1208
+ revisions: Record<string, string>;
1209
+ generation: number;
1210
+ nativeTarget?: {
1211
+ platform: "android" | "ios";
1212
+ kind: "physical" | "emulator" | "simulator";
1213
+ targetId: string;
1214
+ } | undefined;
1215
+ webDiagnostics?: {
1216
+ nodes: Record<string, {
1217
+ clipping: "unknown" | "confirmed" | "clear";
1218
+ centerHitTest: "unknown" | "confirmed" | "clear";
1219
+ scrollOverflow: {
1220
+ horizontal: boolean;
1221
+ vertical: boolean;
1222
+ };
1223
+ paintOrder: number | null;
1224
+ fonts: {
1225
+ family: string;
1226
+ glyphCount: number;
1227
+ isCustom: boolean | null;
1228
+ }[];
1229
+ lineBoxCount: number | null;
1230
+ }>;
1231
+ warnings: {
1232
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
1233
+ message: string;
1234
+ elementId: string;
1235
+ severity: "confirmed" | "uncertain";
1236
+ }[];
1237
+ } | undefined;
1238
+ }, {
1239
+ status: "stable" | "unstable";
1240
+ platform: "web" | "android" | "ios";
1241
+ schemaVersion: 1;
1242
+ scenarioId: string;
1243
+ profile: {
1244
+ window: {
1245
+ width: number;
1246
+ height: number;
1247
+ };
1248
+ pixelRatio: number;
1249
+ fontScale: number;
1250
+ insets: {
1251
+ top: number;
1252
+ right: number;
1253
+ bottom: number;
1254
+ left: number;
1255
+ };
1256
+ root: {
1257
+ x: number;
1258
+ y: number;
1259
+ width: number;
1260
+ height: number;
1261
+ };
1262
+ orientation: "portrait" | "landscape";
1263
+ };
1264
+ snapshotId: string;
1265
+ nodes: {
1266
+ id: string;
1267
+ rect: {
1268
+ x: number;
1269
+ y: number;
1270
+ width: number;
1271
+ height: number;
1272
+ };
1273
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
1274
+ source: {
1275
+ path: string;
1276
+ start: number;
1277
+ end: number;
1278
+ hash: string;
1279
+ line: number;
1280
+ column: number;
1281
+ styleForm?: "pressable-state" | undefined;
1282
+ dependencies?: string[] | undefined;
1283
+ } | null;
1284
+ parentId: string | null;
1285
+ role: string | null;
1286
+ styles: Record<string, unknown>;
1287
+ editable: boolean;
1288
+ editReason: string | null;
1289
+ pressableState?: "pressed" | "rest" | undefined;
1290
+ accessibility?: {
1291
+ direction: "unknown" | "ltr" | "rtl";
1292
+ authoredLabel?: string | undefined;
1293
+ authoredHint?: string | undefined;
1294
+ accessible?: boolean | undefined;
1295
+ focusable?: boolean | undefined;
1296
+ hidden?: boolean | undefined;
1297
+ disabled?: boolean | undefined;
1298
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
1299
+ browser?: {
1300
+ focusOrder: number | null;
1301
+ name: string | null;
1302
+ focusOrderSource: "dom-sequential-estimate";
1303
+ contrast: {
1304
+ status: "measured" | "unavailable";
1305
+ ratio?: number | undefined;
1306
+ requiredRatio?: number | undefined;
1307
+ reason?: string | undefined;
1308
+ };
1309
+ } | undefined;
1310
+ } | undefined;
1311
+ textFit?: {
1312
+ status: "unavailable" | "supported";
1313
+ reason?: string | undefined;
1314
+ fullLineCount?: number | undefined;
1315
+ limitedLineCount?: number | undefined;
1316
+ fullHeight?: number | undefined;
1317
+ availableHeight?: number | undefined;
1318
+ } | undefined;
1319
+ authoredTextProps?: {
1320
+ fontSize?: number | undefined;
1321
+ lineHeight?: number | undefined;
1322
+ numberOfLines?: number | undefined;
1323
+ allowFontScaling?: boolean | undefined;
1324
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
1325
+ } | undefined;
1326
+ measuredLineCount?: number | undefined;
1327
+ }[];
1328
+ sessionId: string;
1329
+ revisions: Record<string, string>;
1330
+ generation: number;
1331
+ nativeTarget?: {
1332
+ platform: "android" | "ios";
1333
+ kind: "physical" | "emulator" | "simulator";
1334
+ targetId: string;
1335
+ } | undefined;
1336
+ webDiagnostics?: {
1337
+ nodes: Record<string, {
1338
+ clipping: "unknown" | "confirmed" | "clear";
1339
+ centerHitTest: "unknown" | "confirmed" | "clear";
1340
+ scrollOverflow: {
1341
+ horizontal: boolean;
1342
+ vertical: boolean;
1343
+ };
1344
+ paintOrder: number | null;
1345
+ fonts: {
1346
+ family: string;
1347
+ glyphCount: number;
1348
+ isCustom: boolean | null;
1349
+ }[];
1350
+ lineBoxCount: number | null;
1351
+ }>;
1352
+ warnings: {
1353
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
1354
+ message: string;
1355
+ elementId: string;
1356
+ severity: "confirmed" | "uncertain";
1357
+ }[];
1358
+ } | undefined;
1359
+ }>, {
1360
+ status: "stable" | "unstable";
1361
+ platform: "web" | "android" | "ios";
1362
+ schemaVersion: 1;
1363
+ scenarioId: string;
1364
+ profile: {
1365
+ window: {
1366
+ width: number;
1367
+ height: number;
1368
+ };
1369
+ pixelRatio: number;
1370
+ fontScale: number;
1371
+ insets: {
1372
+ top: number;
1373
+ right: number;
1374
+ bottom: number;
1375
+ left: number;
1376
+ };
1377
+ root: {
1378
+ x: number;
1379
+ y: number;
1380
+ width: number;
1381
+ height: number;
1382
+ };
1383
+ orientation: "portrait" | "landscape";
1384
+ };
1385
+ snapshotId: string;
1386
+ nodes: {
1387
+ id: string;
1388
+ rect: {
1389
+ x: number;
1390
+ y: number;
1391
+ width: number;
1392
+ height: number;
1393
+ };
1394
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
1395
+ source: {
1396
+ path: string;
1397
+ start: number;
1398
+ end: number;
1399
+ hash: string;
1400
+ line: number;
1401
+ column: number;
1402
+ styleForm?: "pressable-state" | undefined;
1403
+ dependencies?: string[] | undefined;
1404
+ } | null;
1405
+ parentId: string | null;
1406
+ role: string | null;
1407
+ styles: Record<string, unknown>;
1408
+ editable: boolean;
1409
+ editReason: string | null;
1410
+ pressableState?: "pressed" | "rest" | undefined;
1411
+ accessibility?: {
1412
+ direction: "unknown" | "ltr" | "rtl";
1413
+ authoredLabel?: string | undefined;
1414
+ authoredHint?: string | undefined;
1415
+ accessible?: boolean | undefined;
1416
+ focusable?: boolean | undefined;
1417
+ hidden?: boolean | undefined;
1418
+ disabled?: boolean | undefined;
1419
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
1420
+ browser?: {
1421
+ focusOrder: number | null;
1422
+ name: string | null;
1423
+ focusOrderSource: "dom-sequential-estimate";
1424
+ contrast: {
1425
+ status: "measured" | "unavailable";
1426
+ ratio?: number | undefined;
1427
+ requiredRatio?: number | undefined;
1428
+ reason?: string | undefined;
1429
+ };
1430
+ } | undefined;
1431
+ } | undefined;
1432
+ textFit?: {
1433
+ status: "unavailable" | "supported";
1434
+ reason?: string | undefined;
1435
+ fullLineCount?: number | undefined;
1436
+ limitedLineCount?: number | undefined;
1437
+ fullHeight?: number | undefined;
1438
+ availableHeight?: number | undefined;
1439
+ } | undefined;
1440
+ authoredTextProps?: {
1441
+ fontSize?: number | undefined;
1442
+ lineHeight?: number | undefined;
1443
+ numberOfLines?: number | undefined;
1444
+ allowFontScaling?: boolean | undefined;
1445
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
1446
+ } | undefined;
1447
+ measuredLineCount?: number | undefined;
1448
+ }[];
1449
+ sessionId: string;
1450
+ revisions: Record<string, string>;
1451
+ generation: number;
1452
+ nativeTarget?: {
1453
+ platform: "android" | "ios";
1454
+ kind: "physical" | "emulator" | "simulator";
1455
+ targetId: string;
1456
+ } | undefined;
1457
+ webDiagnostics?: {
1458
+ nodes: Record<string, {
1459
+ clipping: "unknown" | "confirmed" | "clear";
1460
+ centerHitTest: "unknown" | "confirmed" | "clear";
1461
+ scrollOverflow: {
1462
+ horizontal: boolean;
1463
+ vertical: boolean;
1464
+ };
1465
+ paintOrder: number | null;
1466
+ fonts: {
1467
+ family: string;
1468
+ glyphCount: number;
1469
+ isCustom: boolean | null;
1470
+ }[];
1471
+ lineBoxCount: number | null;
1472
+ }>;
1473
+ warnings: {
1474
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
1475
+ message: string;
1476
+ elementId: string;
1477
+ severity: "confirmed" | "uncertain";
1478
+ }[];
1479
+ } | undefined;
1480
+ }, {
1481
+ status: "stable" | "unstable";
1482
+ platform: "web" | "android" | "ios";
1483
+ schemaVersion: 1;
1484
+ scenarioId: string;
1485
+ profile: {
1486
+ window: {
1487
+ width: number;
1488
+ height: number;
1489
+ };
1490
+ pixelRatio: number;
1491
+ fontScale: number;
1492
+ insets: {
1493
+ top: number;
1494
+ right: number;
1495
+ bottom: number;
1496
+ left: number;
1497
+ };
1498
+ root: {
1499
+ x: number;
1500
+ y: number;
1501
+ width: number;
1502
+ height: number;
1503
+ };
1504
+ orientation: "portrait" | "landscape";
1505
+ };
1506
+ snapshotId: string;
1507
+ nodes: {
1508
+ id: string;
1509
+ rect: {
1510
+ x: number;
1511
+ y: number;
1512
+ width: number;
1513
+ height: number;
1514
+ };
1515
+ kind: "View" | "Text" | "Pressable" | "TextInput" | "ScrollView" | "Image";
1516
+ source: {
1517
+ path: string;
1518
+ start: number;
1519
+ end: number;
1520
+ hash: string;
1521
+ line: number;
1522
+ column: number;
1523
+ styleForm?: "pressable-state" | undefined;
1524
+ dependencies?: string[] | undefined;
1525
+ } | null;
1526
+ parentId: string | null;
1527
+ role: string | null;
1528
+ styles: Record<string, unknown>;
1529
+ editable: boolean;
1530
+ editReason: string | null;
1531
+ pressableState?: "pressed" | "rest" | undefined;
1532
+ accessibility?: {
1533
+ direction: "unknown" | "ltr" | "rtl";
1534
+ authoredLabel?: string | undefined;
1535
+ authoredHint?: string | undefined;
1536
+ accessible?: boolean | undefined;
1537
+ focusable?: boolean | undefined;
1538
+ hidden?: boolean | undefined;
1539
+ disabled?: boolean | undefined;
1540
+ directionSource?: "unknown" | "authored" | "native-global" | "browser-computed" | undefined;
1541
+ browser?: {
1542
+ focusOrder: number | null;
1543
+ name: string | null;
1544
+ focusOrderSource: "dom-sequential-estimate";
1545
+ contrast: {
1546
+ status: "measured" | "unavailable";
1547
+ ratio?: number | undefined;
1548
+ requiredRatio?: number | undefined;
1549
+ reason?: string | undefined;
1550
+ };
1551
+ } | undefined;
1552
+ } | undefined;
1553
+ textFit?: {
1554
+ status: "unavailable" | "supported";
1555
+ reason?: string | undefined;
1556
+ fullLineCount?: number | undefined;
1557
+ limitedLineCount?: number | undefined;
1558
+ fullHeight?: number | undefined;
1559
+ availableHeight?: number | undefined;
1560
+ } | undefined;
1561
+ authoredTextProps?: {
1562
+ fontSize?: number | undefined;
1563
+ lineHeight?: number | undefined;
1564
+ numberOfLines?: number | undefined;
1565
+ allowFontScaling?: boolean | undefined;
1566
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip" | undefined;
1567
+ } | undefined;
1568
+ measuredLineCount?: number | undefined;
1569
+ }[];
1570
+ sessionId: string;
1571
+ revisions: Record<string, string>;
1572
+ generation: number;
1573
+ nativeTarget?: {
1574
+ platform: "android" | "ios";
1575
+ kind: "physical" | "emulator" | "simulator";
1576
+ targetId: string;
1577
+ } | undefined;
1578
+ webDiagnostics?: {
1579
+ nodes: Record<string, {
1580
+ clipping: "unknown" | "confirmed" | "clear";
1581
+ centerHitTest: "unknown" | "confirmed" | "clear";
1582
+ scrollOverflow: {
1583
+ horizontal: boolean;
1584
+ vertical: boolean;
1585
+ };
1586
+ paintOrder: number | null;
1587
+ fonts: {
1588
+ family: string;
1589
+ glyphCount: number;
1590
+ isCustom: boolean | null;
1591
+ }[];
1592
+ lineBoxCount: number | null;
1593
+ }>;
1594
+ warnings: {
1595
+ code: "CLIPPED" | "OCCLUDED" | "FONT_LOAD_FAILED" | "EVIDENCE_UNAVAILABLE";
1596
+ message: string;
1597
+ elementId: string;
1598
+ severity: "confirmed" | "uncertain";
1599
+ }[];
1600
+ } | undefined;
1601
+ }>;
1602
+ export type SpatialSnapshot = z.infer<typeof SpatialSnapshotSchema>;
1603
+ export declare const SpatialDeltaSchema: z.ZodObject<{
1604
+ added: z.ZodArray<z.ZodString, "many">;
1605
+ removed: z.ZodArray<z.ZodString, "many">;
1606
+ changed: z.ZodArray<z.ZodObject<{
1607
+ id: z.ZodString;
1608
+ before: z.ZodObject<{
1609
+ x: z.ZodNumber;
1610
+ y: z.ZodNumber;
1611
+ width: z.ZodNumber;
1612
+ height: z.ZodNumber;
1613
+ }, "strict", z.ZodTypeAny, {
1614
+ x: number;
1615
+ y: number;
1616
+ width: number;
1617
+ height: number;
1618
+ }, {
1619
+ x: number;
1620
+ y: number;
1621
+ width: number;
1622
+ height: number;
1623
+ }>;
1624
+ after: z.ZodObject<{
1625
+ x: z.ZodNumber;
1626
+ y: z.ZodNumber;
1627
+ width: z.ZodNumber;
1628
+ height: z.ZodNumber;
1629
+ }, "strict", z.ZodTypeAny, {
1630
+ x: number;
1631
+ y: number;
1632
+ width: number;
1633
+ height: number;
1634
+ }, {
1635
+ x: number;
1636
+ y: number;
1637
+ width: number;
1638
+ height: number;
1639
+ }>;
1640
+ delta: z.ZodObject<{
1641
+ x: z.ZodNumber;
1642
+ y: z.ZodNumber;
1643
+ } & {
1644
+ width: z.ZodNumber;
1645
+ height: z.ZodNumber;
1646
+ }, "strict", z.ZodTypeAny, {
1647
+ x: number;
1648
+ y: number;
1649
+ width: number;
1650
+ height: number;
1651
+ }, {
1652
+ x: number;
1653
+ y: number;
1654
+ width: number;
1655
+ height: number;
1656
+ }>;
1657
+ }, "strip", z.ZodTypeAny, {
1658
+ id: string;
1659
+ before: {
1660
+ x: number;
1661
+ y: number;
1662
+ width: number;
1663
+ height: number;
1664
+ };
1665
+ after: {
1666
+ x: number;
1667
+ y: number;
1668
+ width: number;
1669
+ height: number;
1670
+ };
1671
+ delta: {
1672
+ x: number;
1673
+ y: number;
1674
+ width: number;
1675
+ height: number;
1676
+ };
1677
+ }, {
1678
+ id: string;
1679
+ before: {
1680
+ x: number;
1681
+ y: number;
1682
+ width: number;
1683
+ height: number;
1684
+ };
1685
+ after: {
1686
+ x: number;
1687
+ y: number;
1688
+ width: number;
1689
+ height: number;
1690
+ };
1691
+ delta: {
1692
+ x: number;
1693
+ y: number;
1694
+ width: number;
1695
+ height: number;
1696
+ };
1697
+ }>, "many">;
1698
+ }, "strip", z.ZodTypeAny, {
1699
+ added: string[];
1700
+ removed: string[];
1701
+ changed: {
1702
+ id: string;
1703
+ before: {
1704
+ x: number;
1705
+ y: number;
1706
+ width: number;
1707
+ height: number;
1708
+ };
1709
+ after: {
1710
+ x: number;
1711
+ y: number;
1712
+ width: number;
1713
+ height: number;
1714
+ };
1715
+ delta: {
1716
+ x: number;
1717
+ y: number;
1718
+ width: number;
1719
+ height: number;
1720
+ };
1721
+ }[];
1722
+ }, {
1723
+ added: string[];
1724
+ removed: string[];
1725
+ changed: {
1726
+ id: string;
1727
+ before: {
1728
+ x: number;
1729
+ y: number;
1730
+ width: number;
1731
+ height: number;
1732
+ };
1733
+ after: {
1734
+ x: number;
1735
+ y: number;
1736
+ width: number;
1737
+ height: number;
1738
+ };
1739
+ delta: {
1740
+ x: number;
1741
+ y: number;
1742
+ width: number;
1743
+ height: number;
1744
+ };
1745
+ }[];
1746
+ }>;
1747
+ export type SpatialDelta = z.infer<typeof SpatialDeltaSchema>;
1748
+ export interface BrowserPort {
1749
+ captureAccessibility?(): Promise<SpatialSnapshot>;
1750
+ runScenario?(script: import('./workflow.js').ScenarioScript): Promise<void>;
1751
+ trialBatch?(mutations: readonly LayoutMutation[], profileOverrides?: z.infer<typeof ProfileOverridesSchema>): Promise<SpatialSnapshot>;
1752
+ capture(profileOverrides?: z.infer<typeof ProfileOverridesSchema>): Promise<SpatialSnapshot>;
1753
+ trial(elementId: string, patch: z.infer<typeof RnStylePatchSchema>, profileOverrides?: z.infer<typeof ProfileOverridesSchema>): Promise<SpatialSnapshot>;
1754
+ resetTrial(): Promise<void>;
1755
+ screenshot(): Promise<Uint8Array>;
1756
+ close(): Promise<void>;
1757
+ }
1758
+ export interface NativePort {
1759
+ runHook?(name: string, value?: unknown): Promise<void>;
1760
+ capture(expectedRevisions: z.infer<typeof SourceRevisionsSchema>): Promise<SpatialSnapshot>;
1761
+ }
1762
+ export declare const OverlaySceneSchema: z.ZodObject<{
1763
+ width: z.ZodNumber;
1764
+ height: z.ZodNumber;
1765
+ marks: z.ZodArray<z.ZodObject<{
1766
+ label: z.ZodNumber;
1767
+ id: z.ZodString;
1768
+ rect: z.ZodObject<{
1769
+ x: z.ZodNumber;
1770
+ y: z.ZodNumber;
1771
+ width: z.ZodNumber;
1772
+ height: z.ZodNumber;
1773
+ }, "strict", z.ZodTypeAny, {
1774
+ x: number;
1775
+ y: number;
1776
+ width: number;
1777
+ height: number;
1778
+ }, {
1779
+ x: number;
1780
+ y: number;
1781
+ width: number;
1782
+ height: number;
1783
+ }>;
1784
+ }, "strip", z.ZodTypeAny, {
1785
+ id: string;
1786
+ rect: {
1787
+ x: number;
1788
+ y: number;
1789
+ width: number;
1790
+ height: number;
1791
+ };
1792
+ label: number;
1793
+ }, {
1794
+ id: string;
1795
+ rect: {
1796
+ x: number;
1797
+ y: number;
1798
+ width: number;
1799
+ height: number;
1800
+ };
1801
+ label: number;
1802
+ }>, "many">;
1803
+ targets: z.ZodArray<z.ZodObject<{
1804
+ id: z.ZodString;
1805
+ rect: z.ZodObject<{
1806
+ x: z.ZodNumber;
1807
+ y: z.ZodNumber;
1808
+ width: z.ZodNumber;
1809
+ height: z.ZodNumber;
1810
+ }, "strict", z.ZodTypeAny, {
1811
+ x: number;
1812
+ y: number;
1813
+ width: number;
1814
+ height: number;
1815
+ }, {
1816
+ x: number;
1817
+ y: number;
1818
+ width: number;
1819
+ height: number;
1820
+ }>;
1821
+ }, "strip", z.ZodTypeAny, {
1822
+ id: string;
1823
+ rect: {
1824
+ x: number;
1825
+ y: number;
1826
+ width: number;
1827
+ height: number;
1828
+ };
1829
+ }, {
1830
+ id: string;
1831
+ rect: {
1832
+ x: number;
1833
+ y: number;
1834
+ width: number;
1835
+ height: number;
1836
+ };
1837
+ }>, "many">;
1838
+ }, "strip", z.ZodTypeAny, {
1839
+ width: number;
1840
+ height: number;
1841
+ marks: {
1842
+ id: string;
1843
+ rect: {
1844
+ x: number;
1845
+ y: number;
1846
+ width: number;
1847
+ height: number;
1848
+ };
1849
+ label: number;
1850
+ }[];
1851
+ targets: {
1852
+ id: string;
1853
+ rect: {
1854
+ x: number;
1855
+ y: number;
1856
+ width: number;
1857
+ height: number;
1858
+ };
1859
+ }[];
1860
+ }, {
1861
+ width: number;
1862
+ height: number;
1863
+ marks: {
1864
+ id: string;
1865
+ rect: {
1866
+ x: number;
1867
+ y: number;
1868
+ width: number;
1869
+ height: number;
1870
+ };
1871
+ label: number;
1872
+ }[];
1873
+ targets: {
1874
+ id: string;
1875
+ rect: {
1876
+ x: number;
1877
+ y: number;
1878
+ width: number;
1879
+ height: number;
1880
+ };
1881
+ }[];
1882
+ }>;
1883
+ export type OverlayScene = z.infer<typeof OverlaySceneSchema>;
1884
+ export declare const ProfileOverridesSchema: z.ZodEffects<z.ZodObject<{
1885
+ fontScale: z.ZodOptional<z.ZodNumber>;
1886
+ orientation: z.ZodOptional<z.ZodEnum<["portrait", "landscape"]>>;
1887
+ }, "strict", z.ZodTypeAny, {
1888
+ fontScale?: number | undefined;
1889
+ orientation?: "portrait" | "landscape" | undefined;
1890
+ }, {
1891
+ fontScale?: number | undefined;
1892
+ orientation?: "portrait" | "landscape" | undefined;
1893
+ }>, {
1894
+ fontScale?: number | undefined;
1895
+ orientation?: "portrait" | "landscape" | undefined;
1896
+ }, {
1897
+ fontScale?: number | undefined;
1898
+ orientation?: "portrait" | "landscape" | undefined;
1899
+ }>;
1900
+ export type ProfileOverrides = z.infer<typeof ProfileOverridesSchema>;
1901
+ export interface BrowserRuntime {
1902
+ runHook?(name: string, value?: unknown): Promise<void>;
1903
+ applyTrialBatch?(mutations: readonly LayoutMutation[]): Promise<void>;
1904
+ configure(input: {
1905
+ sessionId: string;
1906
+ scenarioId: string;
1907
+ profile: z.infer<typeof DeviceProfileSchema>;
1908
+ }): void;
1909
+ capture(): Promise<SpatialSnapshot>;
1910
+ applyTrial(id: string, patch: z.infer<typeof RnStylePatchSchema>): Promise<void>;
1911
+ resetTrial(): Promise<void>;
1912
+ getDiagnosticTargets(): readonly {
1913
+ id: string;
1914
+ element: unknown;
1915
+ }[];
1916
+ }