@tscircuit/circuit-json-util 0.0.41

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,2368 @@
1
+ import { AnySoupElement, AnySoupElementInput, AnyCircuitElement } from '@tscircuit/soup';
2
+ import { Matrix } from 'transformation-matrix';
3
+ import * as parsel from 'parsel-js';
4
+
5
+ type SoupOps<K extends AnySoupElement["type"], T extends AnySoupElement | AnySoupElementInput> = {
6
+ get: (id: string) => Extract<T, {
7
+ type: K;
8
+ }> | null;
9
+ select: (selector: string) => Extract<T, {
10
+ type: K;
11
+ }> | null;
12
+ getWhere: (where: any) => Extract<T, {
13
+ type: K;
14
+ }> | null;
15
+ getUsing: (using: {
16
+ [key: `${string}_id`]: string;
17
+ }) => Extract<T, {
18
+ type: K;
19
+ }> | null;
20
+ insert: (elm: Omit<Extract<T, {
21
+ type: K;
22
+ }>, "type" | `${K}_id`>) => Extract<T, {
23
+ type: K;
24
+ }>;
25
+ update: (id: string, newProps: Partial<Extract<T, {
26
+ type: K;
27
+ }>>) => Extract<T, {
28
+ type: K;
29
+ }>;
30
+ delete: (id: string) => void;
31
+ list: (where?: any) => Extract<T, {
32
+ type: K;
33
+ }>[];
34
+ };
35
+ type SoupUtilObjects = {
36
+ [K in AnySoupElement["type"]]: SoupOps<K, AnySoupElement>;
37
+ } & {
38
+ toArray: () => AnySoupElement[];
39
+ };
40
+ type SoupInputUtilObjects = {
41
+ [K in AnySoupElementInput["type"]]: SoupOps<K, AnySoupElementInput>;
42
+ };
43
+ type SoupUtilOptions = {
44
+ validateInserts?: boolean;
45
+ };
46
+ type GetSoupUtilFn = ((soup: AnySoupElement[], options?: SoupUtilOptions) => SoupUtilObjects) & {
47
+ unparsed: (soup: AnySoupElementInput[]) => SoupInputUtilObjects;
48
+ };
49
+ declare const su: GetSoupUtilFn;
50
+
51
+ declare const transformSchematicElement: (elm: AnySoupElement, matrix: Matrix) => {
52
+ type: "source_trace";
53
+ source_trace_id: string;
54
+ connected_source_port_ids: string[];
55
+ connected_source_net_ids: string[];
56
+ } | {
57
+ type: "source_port";
58
+ source_component_id: string;
59
+ name: string;
60
+ source_port_id: string;
61
+ pin_number?: number | undefined;
62
+ port_hints?: string[] | undefined;
63
+ } | {
64
+ type: "source_component";
65
+ ftype: "simple_resistor";
66
+ source_component_id: string;
67
+ name: string;
68
+ resistance: number;
69
+ manufacturer_part_number?: string | undefined;
70
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
71
+ } | {
72
+ type: "source_component";
73
+ ftype: "simple_capacitor";
74
+ source_component_id: string;
75
+ name: string;
76
+ capacitance: number;
77
+ manufacturer_part_number?: string | undefined;
78
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
79
+ } | {
80
+ type: "source_component";
81
+ ftype: "simple_diode";
82
+ source_component_id: string;
83
+ name: string;
84
+ manufacturer_part_number?: string | undefined;
85
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
86
+ } | {
87
+ type: "source_component";
88
+ ftype: "simple_ground";
89
+ source_component_id: string;
90
+ name: string;
91
+ manufacturer_part_number?: string | undefined;
92
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
93
+ } | {
94
+ type: "source_component";
95
+ ftype: "simple_chip";
96
+ source_component_id: string;
97
+ name: string;
98
+ manufacturer_part_number?: string | undefined;
99
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
100
+ } | {
101
+ type: "source_component";
102
+ ftype: "simple_bug";
103
+ source_component_id: string;
104
+ name: string;
105
+ manufacturer_part_number?: string | undefined;
106
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
107
+ } | {
108
+ type: "source_component";
109
+ ftype: "led";
110
+ source_component_id: string;
111
+ name: string;
112
+ manufacturer_part_number?: string | undefined;
113
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
114
+ } | {
115
+ voltage: number;
116
+ type: "source_component";
117
+ ftype: "simple_power_source";
118
+ source_component_id: string;
119
+ name: string;
120
+ manufacturer_part_number?: string | undefined;
121
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
122
+ } | {
123
+ type: "source_component";
124
+ ftype: "led";
125
+ source_component_id: string;
126
+ name: string;
127
+ manufacturer_part_number?: string | undefined;
128
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
129
+ } | {
130
+ type: "source_net";
131
+ name: string;
132
+ source_net_id: string;
133
+ member_source_group_ids: string[];
134
+ is_power?: boolean | undefined;
135
+ is_ground?: boolean | undefined;
136
+ is_digital_signal?: boolean | undefined;
137
+ is_analog_signal?: boolean | undefined;
138
+ trace_width?: number | undefined;
139
+ } | {
140
+ type: "source_group";
141
+ source_group_id: string;
142
+ name?: string | undefined;
143
+ } | {
144
+ type: "source_component";
145
+ ftype: "simple_bug";
146
+ source_component_id: string;
147
+ name: string;
148
+ manufacturer_part_number?: string | undefined;
149
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
150
+ } | {
151
+ type: "source_component";
152
+ ftype: "simple_chip";
153
+ source_component_id: string;
154
+ name: string;
155
+ manufacturer_part_number?: string | undefined;
156
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
157
+ } | {
158
+ type: "source_component";
159
+ ftype: "simple_capacitor";
160
+ source_component_id: string;
161
+ name: string;
162
+ capacitance: number;
163
+ manufacturer_part_number?: string | undefined;
164
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
165
+ } | {
166
+ type: "source_component";
167
+ ftype: "simple_diode";
168
+ source_component_id: string;
169
+ name: string;
170
+ manufacturer_part_number?: string | undefined;
171
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
172
+ } | {
173
+ type: "source_component";
174
+ ftype: "simple_resistor";
175
+ source_component_id: string;
176
+ name: string;
177
+ resistance: number;
178
+ manufacturer_part_number?: string | undefined;
179
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
180
+ } | {
181
+ voltage: number;
182
+ type: "source_component";
183
+ ftype: "simple_power_source";
184
+ source_component_id: string;
185
+ name: string;
186
+ manufacturer_part_number?: string | undefined;
187
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
188
+ } | {
189
+ type: "pcb_component";
190
+ width: number;
191
+ height: number;
192
+ source_component_id: string;
193
+ rotation: number;
194
+ center: {
195
+ x: number;
196
+ y: number;
197
+ };
198
+ pcb_component_id: string;
199
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
200
+ } | {
201
+ x: number;
202
+ y: number;
203
+ type: "pcb_hole";
204
+ pcb_hole_id: string;
205
+ hole_shape: "round" | "square";
206
+ hole_diameter: number;
207
+ } | {
208
+ x: number;
209
+ y: number;
210
+ type: "pcb_hole";
211
+ pcb_hole_id: string;
212
+ hole_shape: "oval";
213
+ hole_width: number;
214
+ hole_height: number;
215
+ } | {
216
+ x: number;
217
+ y: number;
218
+ type: "pcb_plated_hole";
219
+ hole_diameter: number;
220
+ shape: "circle";
221
+ outer_diameter: number;
222
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
223
+ pcb_plated_hole_id: string;
224
+ port_hints?: string[] | undefined;
225
+ pcb_component_id?: string | undefined;
226
+ pcb_port_id?: string | undefined;
227
+ } | {
228
+ x: number;
229
+ y: number;
230
+ type: "pcb_plated_hole";
231
+ hole_width: number;
232
+ hole_height: number;
233
+ shape: "oval" | "pill";
234
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
235
+ pcb_plated_hole_id: string;
236
+ outer_width: number;
237
+ outer_height: number;
238
+ port_hints?: string[] | undefined;
239
+ pcb_component_id?: string | undefined;
240
+ pcb_port_id?: string | undefined;
241
+ } | {
242
+ type: "pcb_keepout";
243
+ width: number;
244
+ height: number;
245
+ center: {
246
+ x: number;
247
+ y: number;
248
+ };
249
+ shape: "rect";
250
+ layers: string[];
251
+ pcb_keepout_id: string;
252
+ description?: string | undefined;
253
+ } | {
254
+ type: "pcb_keepout";
255
+ center: {
256
+ x: number;
257
+ y: number;
258
+ };
259
+ shape: "circle";
260
+ layers: string[];
261
+ radius: number;
262
+ pcb_keepout_id: string;
263
+ description?: string | undefined;
264
+ } | {
265
+ x: number;
266
+ y: number;
267
+ type: "pcb_port";
268
+ source_port_id: string;
269
+ pcb_component_id: string;
270
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
271
+ pcb_port_id: string;
272
+ } | {
273
+ x: number;
274
+ y: number;
275
+ type: "pcb_text";
276
+ width: number;
277
+ height: number;
278
+ text: string;
279
+ align: "bottom-left";
280
+ lines: number;
281
+ } | {
282
+ type: "pcb_trace";
283
+ pcb_trace_id: string;
284
+ route: ({
285
+ x: number;
286
+ y: number;
287
+ width: number;
288
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
289
+ route_type: "wire";
290
+ start_pcb_port_id?: string | undefined;
291
+ end_pcb_port_id?: string | undefined;
292
+ } | {
293
+ x: number;
294
+ y: number;
295
+ to_layer: string;
296
+ route_type: "via";
297
+ from_layer: string;
298
+ })[];
299
+ source_trace_id?: string | undefined;
300
+ pcb_component_id?: string | undefined;
301
+ route_thickness_mode?: "constant" | "interpolated" | undefined;
302
+ should_round_corners?: boolean | undefined;
303
+ } | {
304
+ x: number;
305
+ y: number;
306
+ type: "pcb_via";
307
+ hole_diameter: number;
308
+ outer_diameter: number;
309
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
310
+ to_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
311
+ from_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
312
+ } | {
313
+ x: number;
314
+ y: number;
315
+ type: "pcb_smtpad";
316
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
317
+ shape: "circle";
318
+ pcb_smtpad_id: string;
319
+ radius: number;
320
+ port_hints?: string[] | undefined;
321
+ pcb_component_id?: string | undefined;
322
+ pcb_port_id?: string | undefined;
323
+ } | {
324
+ x: number;
325
+ y: number;
326
+ type: "pcb_smtpad";
327
+ width: number;
328
+ height: number;
329
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
330
+ shape: "rect";
331
+ pcb_smtpad_id: string;
332
+ port_hints?: string[] | undefined;
333
+ pcb_component_id?: string | undefined;
334
+ pcb_port_id?: string | undefined;
335
+ } | {
336
+ type: "pcb_board";
337
+ width: number;
338
+ height: number;
339
+ center: {
340
+ x: number;
341
+ y: number;
342
+ };
343
+ pcb_board_id?: string | undefined;
344
+ outline?: {
345
+ x: number;
346
+ y: number;
347
+ }[] | undefined;
348
+ } | {
349
+ type: "pcb_trace_hint";
350
+ pcb_component_id: string;
351
+ pcb_port_id: string;
352
+ route: ({
353
+ x: number;
354
+ y: number;
355
+ trace_width?: number | undefined;
356
+ via?: boolean | undefined;
357
+ to_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
358
+ } | undefined)[];
359
+ pcb_trace_hint_id: string;
360
+ } | {
361
+ type: "pcb_silkscreen_line";
362
+ x1: number;
363
+ x2: number;
364
+ y1: number;
365
+ y2: number;
366
+ pcb_component_id: string;
367
+ layer: "top" | "bottom";
368
+ pcb_silkscreen_line_id: string;
369
+ stroke_width: number;
370
+ } | {
371
+ type: "pcb_silkscreen_path";
372
+ pcb_component_id: string;
373
+ layer: "top" | "bottom";
374
+ route: {
375
+ x: number;
376
+ y: number;
377
+ }[];
378
+ stroke_width: number;
379
+ pcb_silkscreen_path_id: string;
380
+ } | {
381
+ type: "pcb_silkscreen_text";
382
+ text: string;
383
+ pcb_component_id: string;
384
+ layer: "top" | "bottom";
385
+ font: "tscircuit2024";
386
+ font_size: number;
387
+ anchor_position: {
388
+ x: number;
389
+ y: number;
390
+ };
391
+ anchor_alignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right";
392
+ } | {
393
+ type: "pcb_silkscreen_rect";
394
+ width: number;
395
+ height: number;
396
+ center: {
397
+ x: number;
398
+ y: number;
399
+ };
400
+ pcb_component_id: string;
401
+ layer: "top" | "bottom";
402
+ pcb_silkscreen_rect_id: string;
403
+ } | {
404
+ type: "pcb_silkscreen_circle";
405
+ center: {
406
+ x: number;
407
+ y: number;
408
+ };
409
+ pcb_component_id: string;
410
+ layer: "top" | "bottom";
411
+ radius: number;
412
+ pcb_silkscreen_circle_id: string;
413
+ } | {
414
+ type: "pcb_silkscreen_oval";
415
+ center: {
416
+ x: number;
417
+ y: number;
418
+ };
419
+ pcb_component_id: string;
420
+ layer: "top" | "bottom";
421
+ pcb_silkscreen_oval_id: string;
422
+ radius_x: number;
423
+ radius_y: number;
424
+ } | {
425
+ message: string;
426
+ type: "pcb_error";
427
+ source_trace_id: string;
428
+ error_type: "pcb_trace_error";
429
+ pcb_trace_id: string;
430
+ pcb_error_id: string;
431
+ pcb_component_ids: string[];
432
+ pcb_port_ids: string[];
433
+ center?: {
434
+ x: number;
435
+ y: number;
436
+ } | undefined;
437
+ } | {
438
+ message: string;
439
+ type: "pcb_error";
440
+ error_type: "pcb_placement_error";
441
+ pcb_error_id: string;
442
+ } | {
443
+ message: string;
444
+ type: "pcb_error";
445
+ error_type: "pcb_port_not_matched_error";
446
+ pcb_error_id: string;
447
+ pcb_component_ids: string[];
448
+ } | {
449
+ type: "pcb_fabrication_note_path";
450
+ pcb_component_id: string;
451
+ layer: "top" | "bottom";
452
+ route: {
453
+ x: number;
454
+ y: number;
455
+ }[];
456
+ stroke_width: number;
457
+ pcb_fabrication_note_path_id: string;
458
+ color?: string | undefined;
459
+ } | {
460
+ type: "pcb_fabrication_note_text";
461
+ text: string;
462
+ pcb_component_id: string;
463
+ layer: "top" | "bottom";
464
+ font: "tscircuit2024";
465
+ font_size: number;
466
+ anchor_position: {
467
+ x: number;
468
+ y: number;
469
+ };
470
+ anchor_alignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right";
471
+ pcb_fabrication_note_text_id: string;
472
+ color?: string | undefined;
473
+ } | {
474
+ x: number;
475
+ y: number;
476
+ type: "schematic_box";
477
+ width: number;
478
+ height: number;
479
+ schematic_component_id: string;
480
+ } | {
481
+ anchor: "center" | "left" | "right" | "top" | "bottom";
482
+ type: "schematic_text";
483
+ schematic_component_id: string;
484
+ rotation: number;
485
+ schematic_text_id: string;
486
+ text: string;
487
+ position: {
488
+ x: number;
489
+ y: number;
490
+ };
491
+ } | {
492
+ type: "schematic_line";
493
+ schematic_component_id: string;
494
+ x1: number;
495
+ x2: number;
496
+ y1: number;
497
+ y2: number;
498
+ } | {
499
+ type: "schematic_component";
500
+ source_component_id: string;
501
+ schematic_component_id: string;
502
+ rotation: number;
503
+ size: {
504
+ width: number;
505
+ height: number;
506
+ };
507
+ center: {
508
+ x: number;
509
+ y: number;
510
+ };
511
+ pin_spacing?: number | undefined;
512
+ pin_styles?: Record<string, {
513
+ left_margin?: number | undefined;
514
+ right_margin?: number | undefined;
515
+ top_margin?: number | undefined;
516
+ bottom_margin?: number | undefined;
517
+ }> | undefined;
518
+ box_width?: number | undefined;
519
+ symbol_name?: string | undefined;
520
+ port_arrangement?: {
521
+ left_size: number;
522
+ right_size: number;
523
+ top_size?: number | undefined;
524
+ bottom_size?: number | undefined;
525
+ } | {
526
+ left_side?: {
527
+ pins: number[];
528
+ direction?: "top-to-bottom" | "bottom-to-top" | undefined;
529
+ } | undefined;
530
+ right_side?: {
531
+ pins: number[];
532
+ direction?: "top-to-bottom" | "bottom-to-top" | undefined;
533
+ } | undefined;
534
+ top_side?: {
535
+ pins: number[];
536
+ direction?: "left-to-right" | "right-to-left" | undefined;
537
+ } | undefined;
538
+ bottom_side?: {
539
+ pins: number[];
540
+ direction?: "left-to-right" | "right-to-left" | undefined;
541
+ } | undefined;
542
+ } | undefined;
543
+ port_labels?: Record<string, string> | undefined;
544
+ } | {
545
+ type: "schematic_port";
546
+ source_port_id: string;
547
+ center: {
548
+ x: number;
549
+ y: number;
550
+ };
551
+ schematic_port_id: string;
552
+ schematic_component_id?: string | undefined;
553
+ facing_direction?: "left" | "right" | "up" | "down" | undefined;
554
+ } | {
555
+ type: "schematic_trace";
556
+ source_trace_id: string;
557
+ schematic_trace_id: string;
558
+ edges: {
559
+ from: {
560
+ x: number;
561
+ y: number;
562
+ };
563
+ to: {
564
+ x: number;
565
+ y: number;
566
+ };
567
+ from_schematic_port_id?: string | undefined;
568
+ to_schematic_port_id?: string | undefined;
569
+ }[];
570
+ } | {
571
+ type: "schematic_path";
572
+ schematic_component_id: string;
573
+ points: {
574
+ x: number;
575
+ y: number;
576
+ }[];
577
+ fill_color?: "red" | "blue" | undefined;
578
+ is_filled?: boolean | undefined;
579
+ } | {
580
+ message: string;
581
+ type: "schematic_error";
582
+ schematic_error_id: string;
583
+ error_type: "schematic_port_not_found";
584
+ } | {
585
+ type: "schematic_net_label";
586
+ source_net_id: string;
587
+ center: {
588
+ x: number;
589
+ y: number;
590
+ };
591
+ text: string;
592
+ anchor_side: "left" | "right" | "top" | "bottom";
593
+ } | {
594
+ type: "cad_component";
595
+ source_component_id: string;
596
+ position: {
597
+ x: number;
598
+ y: number;
599
+ z: number;
600
+ };
601
+ pcb_component_id: string;
602
+ cad_component_id: string;
603
+ rotation?: {
604
+ x: number;
605
+ y: number;
606
+ z: number;
607
+ } | undefined;
608
+ size?: {
609
+ x: number;
610
+ y: number;
611
+ z: number;
612
+ } | undefined;
613
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
614
+ footprinter_string?: string | undefined;
615
+ model_obj_url?: string | undefined;
616
+ model_stl_url?: string | undefined;
617
+ model_3mf_url?: string | undefined;
618
+ model_jscad?: any;
619
+ };
620
+ declare const transformSchematicElements: (elms: AnySoupElement[], matrix: Matrix) => ({
621
+ type: "source_trace";
622
+ source_trace_id: string;
623
+ connected_source_port_ids: string[];
624
+ connected_source_net_ids: string[];
625
+ } | {
626
+ type: "source_port";
627
+ source_component_id: string;
628
+ name: string;
629
+ source_port_id: string;
630
+ pin_number?: number | undefined;
631
+ port_hints?: string[] | undefined;
632
+ } | {
633
+ type: "source_component";
634
+ ftype: "simple_resistor";
635
+ source_component_id: string;
636
+ name: string;
637
+ resistance: number;
638
+ manufacturer_part_number?: string | undefined;
639
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
640
+ } | {
641
+ type: "source_component";
642
+ ftype: "simple_capacitor";
643
+ source_component_id: string;
644
+ name: string;
645
+ capacitance: number;
646
+ manufacturer_part_number?: string | undefined;
647
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
648
+ } | {
649
+ type: "source_component";
650
+ ftype: "simple_diode";
651
+ source_component_id: string;
652
+ name: string;
653
+ manufacturer_part_number?: string | undefined;
654
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
655
+ } | {
656
+ type: "source_component";
657
+ ftype: "simple_ground";
658
+ source_component_id: string;
659
+ name: string;
660
+ manufacturer_part_number?: string | undefined;
661
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
662
+ } | {
663
+ type: "source_component";
664
+ ftype: "simple_chip";
665
+ source_component_id: string;
666
+ name: string;
667
+ manufacturer_part_number?: string | undefined;
668
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
669
+ } | {
670
+ type: "source_component";
671
+ ftype: "simple_bug";
672
+ source_component_id: string;
673
+ name: string;
674
+ manufacturer_part_number?: string | undefined;
675
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
676
+ } | {
677
+ type: "source_component";
678
+ ftype: "led";
679
+ source_component_id: string;
680
+ name: string;
681
+ manufacturer_part_number?: string | undefined;
682
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
683
+ } | {
684
+ voltage: number;
685
+ type: "source_component";
686
+ ftype: "simple_power_source";
687
+ source_component_id: string;
688
+ name: string;
689
+ manufacturer_part_number?: string | undefined;
690
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
691
+ } | {
692
+ type: "source_component";
693
+ ftype: "led";
694
+ source_component_id: string;
695
+ name: string;
696
+ manufacturer_part_number?: string | undefined;
697
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
698
+ } | {
699
+ type: "source_net";
700
+ name: string;
701
+ source_net_id: string;
702
+ member_source_group_ids: string[];
703
+ is_power?: boolean | undefined;
704
+ is_ground?: boolean | undefined;
705
+ is_digital_signal?: boolean | undefined;
706
+ is_analog_signal?: boolean | undefined;
707
+ trace_width?: number | undefined;
708
+ } | {
709
+ type: "source_group";
710
+ source_group_id: string;
711
+ name?: string | undefined;
712
+ } | {
713
+ type: "source_component";
714
+ ftype: "simple_bug";
715
+ source_component_id: string;
716
+ name: string;
717
+ manufacturer_part_number?: string | undefined;
718
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
719
+ } | {
720
+ type: "source_component";
721
+ ftype: "simple_chip";
722
+ source_component_id: string;
723
+ name: string;
724
+ manufacturer_part_number?: string | undefined;
725
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
726
+ } | {
727
+ type: "source_component";
728
+ ftype: "simple_capacitor";
729
+ source_component_id: string;
730
+ name: string;
731
+ capacitance: number;
732
+ manufacturer_part_number?: string | undefined;
733
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
734
+ } | {
735
+ type: "source_component";
736
+ ftype: "simple_diode";
737
+ source_component_id: string;
738
+ name: string;
739
+ manufacturer_part_number?: string | undefined;
740
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
741
+ } | {
742
+ type: "source_component";
743
+ ftype: "simple_resistor";
744
+ source_component_id: string;
745
+ name: string;
746
+ resistance: number;
747
+ manufacturer_part_number?: string | undefined;
748
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
749
+ } | {
750
+ voltage: number;
751
+ type: "source_component";
752
+ ftype: "simple_power_source";
753
+ source_component_id: string;
754
+ name: string;
755
+ manufacturer_part_number?: string | undefined;
756
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
757
+ } | {
758
+ type: "pcb_component";
759
+ width: number;
760
+ height: number;
761
+ source_component_id: string;
762
+ rotation: number;
763
+ center: {
764
+ x: number;
765
+ y: number;
766
+ };
767
+ pcb_component_id: string;
768
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
769
+ } | {
770
+ x: number;
771
+ y: number;
772
+ type: "pcb_hole";
773
+ pcb_hole_id: string;
774
+ hole_shape: "round" | "square";
775
+ hole_diameter: number;
776
+ } | {
777
+ x: number;
778
+ y: number;
779
+ type: "pcb_hole";
780
+ pcb_hole_id: string;
781
+ hole_shape: "oval";
782
+ hole_width: number;
783
+ hole_height: number;
784
+ } | {
785
+ x: number;
786
+ y: number;
787
+ type: "pcb_plated_hole";
788
+ hole_diameter: number;
789
+ shape: "circle";
790
+ outer_diameter: number;
791
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
792
+ pcb_plated_hole_id: string;
793
+ port_hints?: string[] | undefined;
794
+ pcb_component_id?: string | undefined;
795
+ pcb_port_id?: string | undefined;
796
+ } | {
797
+ x: number;
798
+ y: number;
799
+ type: "pcb_plated_hole";
800
+ hole_width: number;
801
+ hole_height: number;
802
+ shape: "oval" | "pill";
803
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
804
+ pcb_plated_hole_id: string;
805
+ outer_width: number;
806
+ outer_height: number;
807
+ port_hints?: string[] | undefined;
808
+ pcb_component_id?: string | undefined;
809
+ pcb_port_id?: string | undefined;
810
+ } | {
811
+ type: "pcb_keepout";
812
+ width: number;
813
+ height: number;
814
+ center: {
815
+ x: number;
816
+ y: number;
817
+ };
818
+ shape: "rect";
819
+ layers: string[];
820
+ pcb_keepout_id: string;
821
+ description?: string | undefined;
822
+ } | {
823
+ type: "pcb_keepout";
824
+ center: {
825
+ x: number;
826
+ y: number;
827
+ };
828
+ shape: "circle";
829
+ layers: string[];
830
+ radius: number;
831
+ pcb_keepout_id: string;
832
+ description?: string | undefined;
833
+ } | {
834
+ x: number;
835
+ y: number;
836
+ type: "pcb_port";
837
+ source_port_id: string;
838
+ pcb_component_id: string;
839
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
840
+ pcb_port_id: string;
841
+ } | {
842
+ x: number;
843
+ y: number;
844
+ type: "pcb_text";
845
+ width: number;
846
+ height: number;
847
+ text: string;
848
+ align: "bottom-left";
849
+ lines: number;
850
+ } | {
851
+ type: "pcb_trace";
852
+ pcb_trace_id: string;
853
+ route: ({
854
+ x: number;
855
+ y: number;
856
+ width: number;
857
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
858
+ route_type: "wire";
859
+ start_pcb_port_id?: string | undefined;
860
+ end_pcb_port_id?: string | undefined;
861
+ } | {
862
+ x: number;
863
+ y: number;
864
+ to_layer: string;
865
+ route_type: "via";
866
+ from_layer: string;
867
+ })[];
868
+ source_trace_id?: string | undefined;
869
+ pcb_component_id?: string | undefined;
870
+ route_thickness_mode?: "constant" | "interpolated" | undefined;
871
+ should_round_corners?: boolean | undefined;
872
+ } | {
873
+ x: number;
874
+ y: number;
875
+ type: "pcb_via";
876
+ hole_diameter: number;
877
+ outer_diameter: number;
878
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
879
+ to_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
880
+ from_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
881
+ } | {
882
+ x: number;
883
+ y: number;
884
+ type: "pcb_smtpad";
885
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
886
+ shape: "circle";
887
+ pcb_smtpad_id: string;
888
+ radius: number;
889
+ port_hints?: string[] | undefined;
890
+ pcb_component_id?: string | undefined;
891
+ pcb_port_id?: string | undefined;
892
+ } | {
893
+ x: number;
894
+ y: number;
895
+ type: "pcb_smtpad";
896
+ width: number;
897
+ height: number;
898
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
899
+ shape: "rect";
900
+ pcb_smtpad_id: string;
901
+ port_hints?: string[] | undefined;
902
+ pcb_component_id?: string | undefined;
903
+ pcb_port_id?: string | undefined;
904
+ } | {
905
+ type: "pcb_board";
906
+ width: number;
907
+ height: number;
908
+ center: {
909
+ x: number;
910
+ y: number;
911
+ };
912
+ pcb_board_id?: string | undefined;
913
+ outline?: {
914
+ x: number;
915
+ y: number;
916
+ }[] | undefined;
917
+ } | {
918
+ type: "pcb_trace_hint";
919
+ pcb_component_id: string;
920
+ pcb_port_id: string;
921
+ route: ({
922
+ x: number;
923
+ y: number;
924
+ trace_width?: number | undefined;
925
+ via?: boolean | undefined;
926
+ to_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
927
+ } | undefined)[];
928
+ pcb_trace_hint_id: string;
929
+ } | {
930
+ type: "pcb_silkscreen_line";
931
+ x1: number;
932
+ x2: number;
933
+ y1: number;
934
+ y2: number;
935
+ pcb_component_id: string;
936
+ layer: "top" | "bottom";
937
+ pcb_silkscreen_line_id: string;
938
+ stroke_width: number;
939
+ } | {
940
+ type: "pcb_silkscreen_path";
941
+ pcb_component_id: string;
942
+ layer: "top" | "bottom";
943
+ route: {
944
+ x: number;
945
+ y: number;
946
+ }[];
947
+ stroke_width: number;
948
+ pcb_silkscreen_path_id: string;
949
+ } | {
950
+ type: "pcb_silkscreen_text";
951
+ text: string;
952
+ pcb_component_id: string;
953
+ layer: "top" | "bottom";
954
+ font: "tscircuit2024";
955
+ font_size: number;
956
+ anchor_position: {
957
+ x: number;
958
+ y: number;
959
+ };
960
+ anchor_alignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right";
961
+ } | {
962
+ type: "pcb_silkscreen_rect";
963
+ width: number;
964
+ height: number;
965
+ center: {
966
+ x: number;
967
+ y: number;
968
+ };
969
+ pcb_component_id: string;
970
+ layer: "top" | "bottom";
971
+ pcb_silkscreen_rect_id: string;
972
+ } | {
973
+ type: "pcb_silkscreen_circle";
974
+ center: {
975
+ x: number;
976
+ y: number;
977
+ };
978
+ pcb_component_id: string;
979
+ layer: "top" | "bottom";
980
+ radius: number;
981
+ pcb_silkscreen_circle_id: string;
982
+ } | {
983
+ type: "pcb_silkscreen_oval";
984
+ center: {
985
+ x: number;
986
+ y: number;
987
+ };
988
+ pcb_component_id: string;
989
+ layer: "top" | "bottom";
990
+ pcb_silkscreen_oval_id: string;
991
+ radius_x: number;
992
+ radius_y: number;
993
+ } | {
994
+ message: string;
995
+ type: "pcb_error";
996
+ source_trace_id: string;
997
+ error_type: "pcb_trace_error";
998
+ pcb_trace_id: string;
999
+ pcb_error_id: string;
1000
+ pcb_component_ids: string[];
1001
+ pcb_port_ids: string[];
1002
+ center?: {
1003
+ x: number;
1004
+ y: number;
1005
+ } | undefined;
1006
+ } | {
1007
+ message: string;
1008
+ type: "pcb_error";
1009
+ error_type: "pcb_placement_error";
1010
+ pcb_error_id: string;
1011
+ } | {
1012
+ message: string;
1013
+ type: "pcb_error";
1014
+ error_type: "pcb_port_not_matched_error";
1015
+ pcb_error_id: string;
1016
+ pcb_component_ids: string[];
1017
+ } | {
1018
+ type: "pcb_fabrication_note_path";
1019
+ pcb_component_id: string;
1020
+ layer: "top" | "bottom";
1021
+ route: {
1022
+ x: number;
1023
+ y: number;
1024
+ }[];
1025
+ stroke_width: number;
1026
+ pcb_fabrication_note_path_id: string;
1027
+ color?: string | undefined;
1028
+ } | {
1029
+ type: "pcb_fabrication_note_text";
1030
+ text: string;
1031
+ pcb_component_id: string;
1032
+ layer: "top" | "bottom";
1033
+ font: "tscircuit2024";
1034
+ font_size: number;
1035
+ anchor_position: {
1036
+ x: number;
1037
+ y: number;
1038
+ };
1039
+ anchor_alignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right";
1040
+ pcb_fabrication_note_text_id: string;
1041
+ color?: string | undefined;
1042
+ } | {
1043
+ x: number;
1044
+ y: number;
1045
+ type: "schematic_box";
1046
+ width: number;
1047
+ height: number;
1048
+ schematic_component_id: string;
1049
+ } | {
1050
+ anchor: "center" | "left" | "right" | "top" | "bottom";
1051
+ type: "schematic_text";
1052
+ schematic_component_id: string;
1053
+ rotation: number;
1054
+ schematic_text_id: string;
1055
+ text: string;
1056
+ position: {
1057
+ x: number;
1058
+ y: number;
1059
+ };
1060
+ } | {
1061
+ type: "schematic_line";
1062
+ schematic_component_id: string;
1063
+ x1: number;
1064
+ x2: number;
1065
+ y1: number;
1066
+ y2: number;
1067
+ } | {
1068
+ type: "schematic_component";
1069
+ source_component_id: string;
1070
+ schematic_component_id: string;
1071
+ rotation: number;
1072
+ size: {
1073
+ width: number;
1074
+ height: number;
1075
+ };
1076
+ center: {
1077
+ x: number;
1078
+ y: number;
1079
+ };
1080
+ pin_spacing?: number | undefined;
1081
+ pin_styles?: Record<string, {
1082
+ left_margin?: number | undefined;
1083
+ right_margin?: number | undefined;
1084
+ top_margin?: number | undefined;
1085
+ bottom_margin?: number | undefined;
1086
+ }> | undefined;
1087
+ box_width?: number | undefined;
1088
+ symbol_name?: string | undefined;
1089
+ port_arrangement?: {
1090
+ left_size: number;
1091
+ right_size: number;
1092
+ top_size?: number | undefined;
1093
+ bottom_size?: number | undefined;
1094
+ } | {
1095
+ left_side?: {
1096
+ pins: number[];
1097
+ direction?: "top-to-bottom" | "bottom-to-top" | undefined;
1098
+ } | undefined;
1099
+ right_side?: {
1100
+ pins: number[];
1101
+ direction?: "top-to-bottom" | "bottom-to-top" | undefined;
1102
+ } | undefined;
1103
+ top_side?: {
1104
+ pins: number[];
1105
+ direction?: "left-to-right" | "right-to-left" | undefined;
1106
+ } | undefined;
1107
+ bottom_side?: {
1108
+ pins: number[];
1109
+ direction?: "left-to-right" | "right-to-left" | undefined;
1110
+ } | undefined;
1111
+ } | undefined;
1112
+ port_labels?: Record<string, string> | undefined;
1113
+ } | {
1114
+ type: "schematic_port";
1115
+ source_port_id: string;
1116
+ center: {
1117
+ x: number;
1118
+ y: number;
1119
+ };
1120
+ schematic_port_id: string;
1121
+ schematic_component_id?: string | undefined;
1122
+ facing_direction?: "left" | "right" | "up" | "down" | undefined;
1123
+ } | {
1124
+ type: "schematic_trace";
1125
+ source_trace_id: string;
1126
+ schematic_trace_id: string;
1127
+ edges: {
1128
+ from: {
1129
+ x: number;
1130
+ y: number;
1131
+ };
1132
+ to: {
1133
+ x: number;
1134
+ y: number;
1135
+ };
1136
+ from_schematic_port_id?: string | undefined;
1137
+ to_schematic_port_id?: string | undefined;
1138
+ }[];
1139
+ } | {
1140
+ type: "schematic_path";
1141
+ schematic_component_id: string;
1142
+ points: {
1143
+ x: number;
1144
+ y: number;
1145
+ }[];
1146
+ fill_color?: "red" | "blue" | undefined;
1147
+ is_filled?: boolean | undefined;
1148
+ } | {
1149
+ message: string;
1150
+ type: "schematic_error";
1151
+ schematic_error_id: string;
1152
+ error_type: "schematic_port_not_found";
1153
+ } | {
1154
+ type: "schematic_net_label";
1155
+ source_net_id: string;
1156
+ center: {
1157
+ x: number;
1158
+ y: number;
1159
+ };
1160
+ text: string;
1161
+ anchor_side: "left" | "right" | "top" | "bottom";
1162
+ } | {
1163
+ type: "cad_component";
1164
+ source_component_id: string;
1165
+ position: {
1166
+ x: number;
1167
+ y: number;
1168
+ z: number;
1169
+ };
1170
+ pcb_component_id: string;
1171
+ cad_component_id: string;
1172
+ rotation?: {
1173
+ x: number;
1174
+ y: number;
1175
+ z: number;
1176
+ } | undefined;
1177
+ size?: {
1178
+ x: number;
1179
+ y: number;
1180
+ z: number;
1181
+ } | undefined;
1182
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
1183
+ footprinter_string?: string | undefined;
1184
+ model_obj_url?: string | undefined;
1185
+ model_stl_url?: string | undefined;
1186
+ model_3mf_url?: string | undefined;
1187
+ model_jscad?: any;
1188
+ })[];
1189
+ declare const transformPCBElement: (elm: AnySoupElement, matrix: Matrix) => {
1190
+ type: "source_trace";
1191
+ source_trace_id: string;
1192
+ connected_source_port_ids: string[];
1193
+ connected_source_net_ids: string[];
1194
+ } | {
1195
+ type: "source_port";
1196
+ source_component_id: string;
1197
+ name: string;
1198
+ source_port_id: string;
1199
+ pin_number?: number | undefined;
1200
+ port_hints?: string[] | undefined;
1201
+ } | {
1202
+ type: "source_component";
1203
+ ftype: "simple_resistor";
1204
+ source_component_id: string;
1205
+ name: string;
1206
+ resistance: number;
1207
+ manufacturer_part_number?: string | undefined;
1208
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1209
+ } | {
1210
+ type: "source_component";
1211
+ ftype: "simple_capacitor";
1212
+ source_component_id: string;
1213
+ name: string;
1214
+ capacitance: number;
1215
+ manufacturer_part_number?: string | undefined;
1216
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1217
+ } | {
1218
+ type: "source_component";
1219
+ ftype: "simple_diode";
1220
+ source_component_id: string;
1221
+ name: string;
1222
+ manufacturer_part_number?: string | undefined;
1223
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1224
+ } | {
1225
+ type: "source_component";
1226
+ ftype: "simple_ground";
1227
+ source_component_id: string;
1228
+ name: string;
1229
+ manufacturer_part_number?: string | undefined;
1230
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1231
+ } | {
1232
+ type: "source_component";
1233
+ ftype: "simple_chip";
1234
+ source_component_id: string;
1235
+ name: string;
1236
+ manufacturer_part_number?: string | undefined;
1237
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1238
+ } | {
1239
+ type: "source_component";
1240
+ ftype: "simple_bug";
1241
+ source_component_id: string;
1242
+ name: string;
1243
+ manufacturer_part_number?: string | undefined;
1244
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1245
+ } | {
1246
+ type: "source_component";
1247
+ ftype: "led";
1248
+ source_component_id: string;
1249
+ name: string;
1250
+ manufacturer_part_number?: string | undefined;
1251
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1252
+ } | {
1253
+ voltage: number;
1254
+ type: "source_component";
1255
+ ftype: "simple_power_source";
1256
+ source_component_id: string;
1257
+ name: string;
1258
+ manufacturer_part_number?: string | undefined;
1259
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1260
+ } | {
1261
+ type: "source_component";
1262
+ ftype: "led";
1263
+ source_component_id: string;
1264
+ name: string;
1265
+ manufacturer_part_number?: string | undefined;
1266
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1267
+ } | {
1268
+ type: "source_net";
1269
+ name: string;
1270
+ source_net_id: string;
1271
+ member_source_group_ids: string[];
1272
+ is_power?: boolean | undefined;
1273
+ is_ground?: boolean | undefined;
1274
+ is_digital_signal?: boolean | undefined;
1275
+ is_analog_signal?: boolean | undefined;
1276
+ trace_width?: number | undefined;
1277
+ } | {
1278
+ type: "source_group";
1279
+ source_group_id: string;
1280
+ name?: string | undefined;
1281
+ } | {
1282
+ type: "source_component";
1283
+ ftype: "simple_bug";
1284
+ source_component_id: string;
1285
+ name: string;
1286
+ manufacturer_part_number?: string | undefined;
1287
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1288
+ } | {
1289
+ type: "source_component";
1290
+ ftype: "simple_chip";
1291
+ source_component_id: string;
1292
+ name: string;
1293
+ manufacturer_part_number?: string | undefined;
1294
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1295
+ } | {
1296
+ type: "source_component";
1297
+ ftype: "simple_capacitor";
1298
+ source_component_id: string;
1299
+ name: string;
1300
+ capacitance: number;
1301
+ manufacturer_part_number?: string | undefined;
1302
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1303
+ } | {
1304
+ type: "source_component";
1305
+ ftype: "simple_diode";
1306
+ source_component_id: string;
1307
+ name: string;
1308
+ manufacturer_part_number?: string | undefined;
1309
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1310
+ } | {
1311
+ type: "source_component";
1312
+ ftype: "simple_resistor";
1313
+ source_component_id: string;
1314
+ name: string;
1315
+ resistance: number;
1316
+ manufacturer_part_number?: string | undefined;
1317
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1318
+ } | {
1319
+ voltage: number;
1320
+ type: "source_component";
1321
+ ftype: "simple_power_source";
1322
+ source_component_id: string;
1323
+ name: string;
1324
+ manufacturer_part_number?: string | undefined;
1325
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1326
+ } | {
1327
+ type: "pcb_component";
1328
+ width: number;
1329
+ height: number;
1330
+ source_component_id: string;
1331
+ rotation: number;
1332
+ center: {
1333
+ x: number;
1334
+ y: number;
1335
+ };
1336
+ pcb_component_id: string;
1337
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1338
+ } | {
1339
+ x: number;
1340
+ y: number;
1341
+ type: "pcb_hole";
1342
+ pcb_hole_id: string;
1343
+ hole_shape: "round" | "square";
1344
+ hole_diameter: number;
1345
+ } | {
1346
+ x: number;
1347
+ y: number;
1348
+ type: "pcb_hole";
1349
+ pcb_hole_id: string;
1350
+ hole_shape: "oval";
1351
+ hole_width: number;
1352
+ hole_height: number;
1353
+ } | {
1354
+ x: number;
1355
+ y: number;
1356
+ type: "pcb_plated_hole";
1357
+ hole_diameter: number;
1358
+ shape: "circle";
1359
+ outer_diameter: number;
1360
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
1361
+ pcb_plated_hole_id: string;
1362
+ port_hints?: string[] | undefined;
1363
+ pcb_component_id?: string | undefined;
1364
+ pcb_port_id?: string | undefined;
1365
+ } | {
1366
+ x: number;
1367
+ y: number;
1368
+ type: "pcb_plated_hole";
1369
+ hole_width: number;
1370
+ hole_height: number;
1371
+ shape: "oval" | "pill";
1372
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
1373
+ pcb_plated_hole_id: string;
1374
+ outer_width: number;
1375
+ outer_height: number;
1376
+ port_hints?: string[] | undefined;
1377
+ pcb_component_id?: string | undefined;
1378
+ pcb_port_id?: string | undefined;
1379
+ } | {
1380
+ type: "pcb_keepout";
1381
+ width: number;
1382
+ height: number;
1383
+ center: {
1384
+ x: number;
1385
+ y: number;
1386
+ };
1387
+ shape: "rect";
1388
+ layers: string[];
1389
+ pcb_keepout_id: string;
1390
+ description?: string | undefined;
1391
+ } | {
1392
+ type: "pcb_keepout";
1393
+ center: {
1394
+ x: number;
1395
+ y: number;
1396
+ };
1397
+ shape: "circle";
1398
+ layers: string[];
1399
+ radius: number;
1400
+ pcb_keepout_id: string;
1401
+ description?: string | undefined;
1402
+ } | {
1403
+ x: number;
1404
+ y: number;
1405
+ type: "pcb_port";
1406
+ source_port_id: string;
1407
+ pcb_component_id: string;
1408
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
1409
+ pcb_port_id: string;
1410
+ } | {
1411
+ x: number;
1412
+ y: number;
1413
+ type: "pcb_text";
1414
+ width: number;
1415
+ height: number;
1416
+ text: string;
1417
+ align: "bottom-left";
1418
+ lines: number;
1419
+ } | {
1420
+ type: "pcb_trace";
1421
+ pcb_trace_id: string;
1422
+ route: ({
1423
+ x: number;
1424
+ y: number;
1425
+ width: number;
1426
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1427
+ route_type: "wire";
1428
+ start_pcb_port_id?: string | undefined;
1429
+ end_pcb_port_id?: string | undefined;
1430
+ } | {
1431
+ x: number;
1432
+ y: number;
1433
+ to_layer: string;
1434
+ route_type: "via";
1435
+ from_layer: string;
1436
+ })[];
1437
+ source_trace_id?: string | undefined;
1438
+ pcb_component_id?: string | undefined;
1439
+ route_thickness_mode?: "constant" | "interpolated" | undefined;
1440
+ should_round_corners?: boolean | undefined;
1441
+ } | {
1442
+ x: number;
1443
+ y: number;
1444
+ type: "pcb_via";
1445
+ hole_diameter: number;
1446
+ outer_diameter: number;
1447
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
1448
+ to_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
1449
+ from_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
1450
+ } | {
1451
+ x: number;
1452
+ y: number;
1453
+ type: "pcb_smtpad";
1454
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1455
+ shape: "circle";
1456
+ pcb_smtpad_id: string;
1457
+ radius: number;
1458
+ port_hints?: string[] | undefined;
1459
+ pcb_component_id?: string | undefined;
1460
+ pcb_port_id?: string | undefined;
1461
+ } | {
1462
+ x: number;
1463
+ y: number;
1464
+ type: "pcb_smtpad";
1465
+ width: number;
1466
+ height: number;
1467
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1468
+ shape: "rect";
1469
+ pcb_smtpad_id: string;
1470
+ port_hints?: string[] | undefined;
1471
+ pcb_component_id?: string | undefined;
1472
+ pcb_port_id?: string | undefined;
1473
+ } | {
1474
+ type: "pcb_board";
1475
+ width: number;
1476
+ height: number;
1477
+ center: {
1478
+ x: number;
1479
+ y: number;
1480
+ };
1481
+ pcb_board_id?: string | undefined;
1482
+ outline?: {
1483
+ x: number;
1484
+ y: number;
1485
+ }[] | undefined;
1486
+ } | {
1487
+ type: "pcb_trace_hint";
1488
+ pcb_component_id: string;
1489
+ pcb_port_id: string;
1490
+ route: ({
1491
+ x: number;
1492
+ y: number;
1493
+ trace_width?: number | undefined;
1494
+ via?: boolean | undefined;
1495
+ to_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
1496
+ } | undefined)[];
1497
+ pcb_trace_hint_id: string;
1498
+ } | {
1499
+ type: "pcb_silkscreen_line";
1500
+ x1: number;
1501
+ x2: number;
1502
+ y1: number;
1503
+ y2: number;
1504
+ pcb_component_id: string;
1505
+ layer: "top" | "bottom";
1506
+ pcb_silkscreen_line_id: string;
1507
+ stroke_width: number;
1508
+ } | {
1509
+ type: "pcb_silkscreen_path";
1510
+ pcb_component_id: string;
1511
+ layer: "top" | "bottom";
1512
+ route: {
1513
+ x: number;
1514
+ y: number;
1515
+ }[];
1516
+ stroke_width: number;
1517
+ pcb_silkscreen_path_id: string;
1518
+ } | {
1519
+ type: "pcb_silkscreen_text";
1520
+ text: string;
1521
+ pcb_component_id: string;
1522
+ layer: "top" | "bottom";
1523
+ font: "tscircuit2024";
1524
+ font_size: number;
1525
+ anchor_position: {
1526
+ x: number;
1527
+ y: number;
1528
+ };
1529
+ anchor_alignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right";
1530
+ } | {
1531
+ type: "pcb_silkscreen_rect";
1532
+ width: number;
1533
+ height: number;
1534
+ center: {
1535
+ x: number;
1536
+ y: number;
1537
+ };
1538
+ pcb_component_id: string;
1539
+ layer: "top" | "bottom";
1540
+ pcb_silkscreen_rect_id: string;
1541
+ } | {
1542
+ type: "pcb_silkscreen_circle";
1543
+ center: {
1544
+ x: number;
1545
+ y: number;
1546
+ };
1547
+ pcb_component_id: string;
1548
+ layer: "top" | "bottom";
1549
+ radius: number;
1550
+ pcb_silkscreen_circle_id: string;
1551
+ } | {
1552
+ type: "pcb_silkscreen_oval";
1553
+ center: {
1554
+ x: number;
1555
+ y: number;
1556
+ };
1557
+ pcb_component_id: string;
1558
+ layer: "top" | "bottom";
1559
+ pcb_silkscreen_oval_id: string;
1560
+ radius_x: number;
1561
+ radius_y: number;
1562
+ } | {
1563
+ message: string;
1564
+ type: "pcb_error";
1565
+ source_trace_id: string;
1566
+ error_type: "pcb_trace_error";
1567
+ pcb_trace_id: string;
1568
+ pcb_error_id: string;
1569
+ pcb_component_ids: string[];
1570
+ pcb_port_ids: string[];
1571
+ center?: {
1572
+ x: number;
1573
+ y: number;
1574
+ } | undefined;
1575
+ } | {
1576
+ message: string;
1577
+ type: "pcb_error";
1578
+ error_type: "pcb_placement_error";
1579
+ pcb_error_id: string;
1580
+ } | {
1581
+ message: string;
1582
+ type: "pcb_error";
1583
+ error_type: "pcb_port_not_matched_error";
1584
+ pcb_error_id: string;
1585
+ pcb_component_ids: string[];
1586
+ } | {
1587
+ type: "pcb_fabrication_note_path";
1588
+ pcb_component_id: string;
1589
+ layer: "top" | "bottom";
1590
+ route: {
1591
+ x: number;
1592
+ y: number;
1593
+ }[];
1594
+ stroke_width: number;
1595
+ pcb_fabrication_note_path_id: string;
1596
+ color?: string | undefined;
1597
+ } | {
1598
+ type: "pcb_fabrication_note_text";
1599
+ text: string;
1600
+ pcb_component_id: string;
1601
+ layer: "top" | "bottom";
1602
+ font: "tscircuit2024";
1603
+ font_size: number;
1604
+ anchor_position: {
1605
+ x: number;
1606
+ y: number;
1607
+ };
1608
+ anchor_alignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right";
1609
+ pcb_fabrication_note_text_id: string;
1610
+ color?: string | undefined;
1611
+ } | {
1612
+ x: number;
1613
+ y: number;
1614
+ type: "schematic_box";
1615
+ width: number;
1616
+ height: number;
1617
+ schematic_component_id: string;
1618
+ } | {
1619
+ anchor: "center" | "left" | "right" | "top" | "bottom";
1620
+ type: "schematic_text";
1621
+ schematic_component_id: string;
1622
+ rotation: number;
1623
+ schematic_text_id: string;
1624
+ text: string;
1625
+ position: {
1626
+ x: number;
1627
+ y: number;
1628
+ };
1629
+ } | {
1630
+ type: "schematic_line";
1631
+ schematic_component_id: string;
1632
+ x1: number;
1633
+ x2: number;
1634
+ y1: number;
1635
+ y2: number;
1636
+ } | {
1637
+ type: "schematic_component";
1638
+ source_component_id: string;
1639
+ schematic_component_id: string;
1640
+ rotation: number;
1641
+ size: {
1642
+ width: number;
1643
+ height: number;
1644
+ };
1645
+ center: {
1646
+ x: number;
1647
+ y: number;
1648
+ };
1649
+ pin_spacing?: number | undefined;
1650
+ pin_styles?: Record<string, {
1651
+ left_margin?: number | undefined;
1652
+ right_margin?: number | undefined;
1653
+ top_margin?: number | undefined;
1654
+ bottom_margin?: number | undefined;
1655
+ }> | undefined;
1656
+ box_width?: number | undefined;
1657
+ symbol_name?: string | undefined;
1658
+ port_arrangement?: {
1659
+ left_size: number;
1660
+ right_size: number;
1661
+ top_size?: number | undefined;
1662
+ bottom_size?: number | undefined;
1663
+ } | {
1664
+ left_side?: {
1665
+ pins: number[];
1666
+ direction?: "top-to-bottom" | "bottom-to-top" | undefined;
1667
+ } | undefined;
1668
+ right_side?: {
1669
+ pins: number[];
1670
+ direction?: "top-to-bottom" | "bottom-to-top" | undefined;
1671
+ } | undefined;
1672
+ top_side?: {
1673
+ pins: number[];
1674
+ direction?: "left-to-right" | "right-to-left" | undefined;
1675
+ } | undefined;
1676
+ bottom_side?: {
1677
+ pins: number[];
1678
+ direction?: "left-to-right" | "right-to-left" | undefined;
1679
+ } | undefined;
1680
+ } | undefined;
1681
+ port_labels?: Record<string, string> | undefined;
1682
+ } | {
1683
+ type: "schematic_port";
1684
+ source_port_id: string;
1685
+ center: {
1686
+ x: number;
1687
+ y: number;
1688
+ };
1689
+ schematic_port_id: string;
1690
+ schematic_component_id?: string | undefined;
1691
+ facing_direction?: "left" | "right" | "up" | "down" | undefined;
1692
+ } | {
1693
+ type: "schematic_trace";
1694
+ source_trace_id: string;
1695
+ schematic_trace_id: string;
1696
+ edges: {
1697
+ from: {
1698
+ x: number;
1699
+ y: number;
1700
+ };
1701
+ to: {
1702
+ x: number;
1703
+ y: number;
1704
+ };
1705
+ from_schematic_port_id?: string | undefined;
1706
+ to_schematic_port_id?: string | undefined;
1707
+ }[];
1708
+ } | {
1709
+ type: "schematic_path";
1710
+ schematic_component_id: string;
1711
+ points: {
1712
+ x: number;
1713
+ y: number;
1714
+ }[];
1715
+ fill_color?: "red" | "blue" | undefined;
1716
+ is_filled?: boolean | undefined;
1717
+ } | {
1718
+ message: string;
1719
+ type: "schematic_error";
1720
+ schematic_error_id: string;
1721
+ error_type: "schematic_port_not_found";
1722
+ } | {
1723
+ type: "schematic_net_label";
1724
+ source_net_id: string;
1725
+ center: {
1726
+ x: number;
1727
+ y: number;
1728
+ };
1729
+ text: string;
1730
+ anchor_side: "left" | "right" | "top" | "bottom";
1731
+ } | {
1732
+ type: "cad_component";
1733
+ source_component_id: string;
1734
+ position: {
1735
+ x: number;
1736
+ y: number;
1737
+ z: number;
1738
+ };
1739
+ pcb_component_id: string;
1740
+ cad_component_id: string;
1741
+ rotation?: {
1742
+ x: number;
1743
+ y: number;
1744
+ z: number;
1745
+ } | undefined;
1746
+ size?: {
1747
+ x: number;
1748
+ y: number;
1749
+ z: number;
1750
+ } | undefined;
1751
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
1752
+ footprinter_string?: string | undefined;
1753
+ model_obj_url?: string | undefined;
1754
+ model_stl_url?: string | undefined;
1755
+ model_3mf_url?: string | undefined;
1756
+ model_jscad?: any;
1757
+ };
1758
+ declare const transformPCBElements: (elms: AnySoupElement[], matrix: Matrix) => ({
1759
+ type: "source_trace";
1760
+ source_trace_id: string;
1761
+ connected_source_port_ids: string[];
1762
+ connected_source_net_ids: string[];
1763
+ } | {
1764
+ type: "source_port";
1765
+ source_component_id: string;
1766
+ name: string;
1767
+ source_port_id: string;
1768
+ pin_number?: number | undefined;
1769
+ port_hints?: string[] | undefined;
1770
+ } | {
1771
+ type: "source_component";
1772
+ ftype: "simple_resistor";
1773
+ source_component_id: string;
1774
+ name: string;
1775
+ resistance: number;
1776
+ manufacturer_part_number?: string | undefined;
1777
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1778
+ } | {
1779
+ type: "source_component";
1780
+ ftype: "simple_capacitor";
1781
+ source_component_id: string;
1782
+ name: string;
1783
+ capacitance: number;
1784
+ manufacturer_part_number?: string | undefined;
1785
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1786
+ } | {
1787
+ type: "source_component";
1788
+ ftype: "simple_diode";
1789
+ source_component_id: string;
1790
+ name: string;
1791
+ manufacturer_part_number?: string | undefined;
1792
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1793
+ } | {
1794
+ type: "source_component";
1795
+ ftype: "simple_ground";
1796
+ source_component_id: string;
1797
+ name: string;
1798
+ manufacturer_part_number?: string | undefined;
1799
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1800
+ } | {
1801
+ type: "source_component";
1802
+ ftype: "simple_chip";
1803
+ source_component_id: string;
1804
+ name: string;
1805
+ manufacturer_part_number?: string | undefined;
1806
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1807
+ } | {
1808
+ type: "source_component";
1809
+ ftype: "simple_bug";
1810
+ source_component_id: string;
1811
+ name: string;
1812
+ manufacturer_part_number?: string | undefined;
1813
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1814
+ } | {
1815
+ type: "source_component";
1816
+ ftype: "led";
1817
+ source_component_id: string;
1818
+ name: string;
1819
+ manufacturer_part_number?: string | undefined;
1820
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1821
+ } | {
1822
+ voltage: number;
1823
+ type: "source_component";
1824
+ ftype: "simple_power_source";
1825
+ source_component_id: string;
1826
+ name: string;
1827
+ manufacturer_part_number?: string | undefined;
1828
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1829
+ } | {
1830
+ type: "source_component";
1831
+ ftype: "led";
1832
+ source_component_id: string;
1833
+ name: string;
1834
+ manufacturer_part_number?: string | undefined;
1835
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1836
+ } | {
1837
+ type: "source_net";
1838
+ name: string;
1839
+ source_net_id: string;
1840
+ member_source_group_ids: string[];
1841
+ is_power?: boolean | undefined;
1842
+ is_ground?: boolean | undefined;
1843
+ is_digital_signal?: boolean | undefined;
1844
+ is_analog_signal?: boolean | undefined;
1845
+ trace_width?: number | undefined;
1846
+ } | {
1847
+ type: "source_group";
1848
+ source_group_id: string;
1849
+ name?: string | undefined;
1850
+ } | {
1851
+ type: "source_component";
1852
+ ftype: "simple_bug";
1853
+ source_component_id: string;
1854
+ name: string;
1855
+ manufacturer_part_number?: string | undefined;
1856
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1857
+ } | {
1858
+ type: "source_component";
1859
+ ftype: "simple_chip";
1860
+ source_component_id: string;
1861
+ name: string;
1862
+ manufacturer_part_number?: string | undefined;
1863
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1864
+ } | {
1865
+ type: "source_component";
1866
+ ftype: "simple_capacitor";
1867
+ source_component_id: string;
1868
+ name: string;
1869
+ capacitance: number;
1870
+ manufacturer_part_number?: string | undefined;
1871
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1872
+ } | {
1873
+ type: "source_component";
1874
+ ftype: "simple_diode";
1875
+ source_component_id: string;
1876
+ name: string;
1877
+ manufacturer_part_number?: string | undefined;
1878
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1879
+ } | {
1880
+ type: "source_component";
1881
+ ftype: "simple_resistor";
1882
+ source_component_id: string;
1883
+ name: string;
1884
+ resistance: number;
1885
+ manufacturer_part_number?: string | undefined;
1886
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1887
+ } | {
1888
+ voltage: number;
1889
+ type: "source_component";
1890
+ ftype: "simple_power_source";
1891
+ source_component_id: string;
1892
+ name: string;
1893
+ manufacturer_part_number?: string | undefined;
1894
+ supplier_part_numbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
1895
+ } | {
1896
+ type: "pcb_component";
1897
+ width: number;
1898
+ height: number;
1899
+ source_component_id: string;
1900
+ rotation: number;
1901
+ center: {
1902
+ x: number;
1903
+ y: number;
1904
+ };
1905
+ pcb_component_id: string;
1906
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1907
+ } | {
1908
+ x: number;
1909
+ y: number;
1910
+ type: "pcb_hole";
1911
+ pcb_hole_id: string;
1912
+ hole_shape: "round" | "square";
1913
+ hole_diameter: number;
1914
+ } | {
1915
+ x: number;
1916
+ y: number;
1917
+ type: "pcb_hole";
1918
+ pcb_hole_id: string;
1919
+ hole_shape: "oval";
1920
+ hole_width: number;
1921
+ hole_height: number;
1922
+ } | {
1923
+ x: number;
1924
+ y: number;
1925
+ type: "pcb_plated_hole";
1926
+ hole_diameter: number;
1927
+ shape: "circle";
1928
+ outer_diameter: number;
1929
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
1930
+ pcb_plated_hole_id: string;
1931
+ port_hints?: string[] | undefined;
1932
+ pcb_component_id?: string | undefined;
1933
+ pcb_port_id?: string | undefined;
1934
+ } | {
1935
+ x: number;
1936
+ y: number;
1937
+ type: "pcb_plated_hole";
1938
+ hole_width: number;
1939
+ hole_height: number;
1940
+ shape: "oval" | "pill";
1941
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
1942
+ pcb_plated_hole_id: string;
1943
+ outer_width: number;
1944
+ outer_height: number;
1945
+ port_hints?: string[] | undefined;
1946
+ pcb_component_id?: string | undefined;
1947
+ pcb_port_id?: string | undefined;
1948
+ } | {
1949
+ type: "pcb_keepout";
1950
+ width: number;
1951
+ height: number;
1952
+ center: {
1953
+ x: number;
1954
+ y: number;
1955
+ };
1956
+ shape: "rect";
1957
+ layers: string[];
1958
+ pcb_keepout_id: string;
1959
+ description?: string | undefined;
1960
+ } | {
1961
+ type: "pcb_keepout";
1962
+ center: {
1963
+ x: number;
1964
+ y: number;
1965
+ };
1966
+ shape: "circle";
1967
+ layers: string[];
1968
+ radius: number;
1969
+ pcb_keepout_id: string;
1970
+ description?: string | undefined;
1971
+ } | {
1972
+ x: number;
1973
+ y: number;
1974
+ type: "pcb_port";
1975
+ source_port_id: string;
1976
+ pcb_component_id: string;
1977
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
1978
+ pcb_port_id: string;
1979
+ } | {
1980
+ x: number;
1981
+ y: number;
1982
+ type: "pcb_text";
1983
+ width: number;
1984
+ height: number;
1985
+ text: string;
1986
+ align: "bottom-left";
1987
+ lines: number;
1988
+ } | {
1989
+ type: "pcb_trace";
1990
+ pcb_trace_id: string;
1991
+ route: ({
1992
+ x: number;
1993
+ y: number;
1994
+ width: number;
1995
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1996
+ route_type: "wire";
1997
+ start_pcb_port_id?: string | undefined;
1998
+ end_pcb_port_id?: string | undefined;
1999
+ } | {
2000
+ x: number;
2001
+ y: number;
2002
+ to_layer: string;
2003
+ route_type: "via";
2004
+ from_layer: string;
2005
+ })[];
2006
+ source_trace_id?: string | undefined;
2007
+ pcb_component_id?: string | undefined;
2008
+ route_thickness_mode?: "constant" | "interpolated" | undefined;
2009
+ should_round_corners?: boolean | undefined;
2010
+ } | {
2011
+ x: number;
2012
+ y: number;
2013
+ type: "pcb_via";
2014
+ hole_diameter: number;
2015
+ outer_diameter: number;
2016
+ layers: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[];
2017
+ to_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
2018
+ from_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
2019
+ } | {
2020
+ x: number;
2021
+ y: number;
2022
+ type: "pcb_smtpad";
2023
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
2024
+ shape: "circle";
2025
+ pcb_smtpad_id: string;
2026
+ radius: number;
2027
+ port_hints?: string[] | undefined;
2028
+ pcb_component_id?: string | undefined;
2029
+ pcb_port_id?: string | undefined;
2030
+ } | {
2031
+ x: number;
2032
+ y: number;
2033
+ type: "pcb_smtpad";
2034
+ width: number;
2035
+ height: number;
2036
+ layer: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
2037
+ shape: "rect";
2038
+ pcb_smtpad_id: string;
2039
+ port_hints?: string[] | undefined;
2040
+ pcb_component_id?: string | undefined;
2041
+ pcb_port_id?: string | undefined;
2042
+ } | {
2043
+ type: "pcb_board";
2044
+ width: number;
2045
+ height: number;
2046
+ center: {
2047
+ x: number;
2048
+ y: number;
2049
+ };
2050
+ pcb_board_id?: string | undefined;
2051
+ outline?: {
2052
+ x: number;
2053
+ y: number;
2054
+ }[] | undefined;
2055
+ } | {
2056
+ type: "pcb_trace_hint";
2057
+ pcb_component_id: string;
2058
+ pcb_port_id: string;
2059
+ route: ({
2060
+ x: number;
2061
+ y: number;
2062
+ trace_width?: number | undefined;
2063
+ via?: boolean | undefined;
2064
+ to_layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
2065
+ } | undefined)[];
2066
+ pcb_trace_hint_id: string;
2067
+ } | {
2068
+ type: "pcb_silkscreen_line";
2069
+ x1: number;
2070
+ x2: number;
2071
+ y1: number;
2072
+ y2: number;
2073
+ pcb_component_id: string;
2074
+ layer: "top" | "bottom";
2075
+ pcb_silkscreen_line_id: string;
2076
+ stroke_width: number;
2077
+ } | {
2078
+ type: "pcb_silkscreen_path";
2079
+ pcb_component_id: string;
2080
+ layer: "top" | "bottom";
2081
+ route: {
2082
+ x: number;
2083
+ y: number;
2084
+ }[];
2085
+ stroke_width: number;
2086
+ pcb_silkscreen_path_id: string;
2087
+ } | {
2088
+ type: "pcb_silkscreen_text";
2089
+ text: string;
2090
+ pcb_component_id: string;
2091
+ layer: "top" | "bottom";
2092
+ font: "tscircuit2024";
2093
+ font_size: number;
2094
+ anchor_position: {
2095
+ x: number;
2096
+ y: number;
2097
+ };
2098
+ anchor_alignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right";
2099
+ } | {
2100
+ type: "pcb_silkscreen_rect";
2101
+ width: number;
2102
+ height: number;
2103
+ center: {
2104
+ x: number;
2105
+ y: number;
2106
+ };
2107
+ pcb_component_id: string;
2108
+ layer: "top" | "bottom";
2109
+ pcb_silkscreen_rect_id: string;
2110
+ } | {
2111
+ type: "pcb_silkscreen_circle";
2112
+ center: {
2113
+ x: number;
2114
+ y: number;
2115
+ };
2116
+ pcb_component_id: string;
2117
+ layer: "top" | "bottom";
2118
+ radius: number;
2119
+ pcb_silkscreen_circle_id: string;
2120
+ } | {
2121
+ type: "pcb_silkscreen_oval";
2122
+ center: {
2123
+ x: number;
2124
+ y: number;
2125
+ };
2126
+ pcb_component_id: string;
2127
+ layer: "top" | "bottom";
2128
+ pcb_silkscreen_oval_id: string;
2129
+ radius_x: number;
2130
+ radius_y: number;
2131
+ } | {
2132
+ message: string;
2133
+ type: "pcb_error";
2134
+ source_trace_id: string;
2135
+ error_type: "pcb_trace_error";
2136
+ pcb_trace_id: string;
2137
+ pcb_error_id: string;
2138
+ pcb_component_ids: string[];
2139
+ pcb_port_ids: string[];
2140
+ center?: {
2141
+ x: number;
2142
+ y: number;
2143
+ } | undefined;
2144
+ } | {
2145
+ message: string;
2146
+ type: "pcb_error";
2147
+ error_type: "pcb_placement_error";
2148
+ pcb_error_id: string;
2149
+ } | {
2150
+ message: string;
2151
+ type: "pcb_error";
2152
+ error_type: "pcb_port_not_matched_error";
2153
+ pcb_error_id: string;
2154
+ pcb_component_ids: string[];
2155
+ } | {
2156
+ type: "pcb_fabrication_note_path";
2157
+ pcb_component_id: string;
2158
+ layer: "top" | "bottom";
2159
+ route: {
2160
+ x: number;
2161
+ y: number;
2162
+ }[];
2163
+ stroke_width: number;
2164
+ pcb_fabrication_note_path_id: string;
2165
+ color?: string | undefined;
2166
+ } | {
2167
+ type: "pcb_fabrication_note_text";
2168
+ text: string;
2169
+ pcb_component_id: string;
2170
+ layer: "top" | "bottom";
2171
+ font: "tscircuit2024";
2172
+ font_size: number;
2173
+ anchor_position: {
2174
+ x: number;
2175
+ y: number;
2176
+ };
2177
+ anchor_alignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right";
2178
+ pcb_fabrication_note_text_id: string;
2179
+ color?: string | undefined;
2180
+ } | {
2181
+ x: number;
2182
+ y: number;
2183
+ type: "schematic_box";
2184
+ width: number;
2185
+ height: number;
2186
+ schematic_component_id: string;
2187
+ } | {
2188
+ anchor: "center" | "left" | "right" | "top" | "bottom";
2189
+ type: "schematic_text";
2190
+ schematic_component_id: string;
2191
+ rotation: number;
2192
+ schematic_text_id: string;
2193
+ text: string;
2194
+ position: {
2195
+ x: number;
2196
+ y: number;
2197
+ };
2198
+ } | {
2199
+ type: "schematic_line";
2200
+ schematic_component_id: string;
2201
+ x1: number;
2202
+ x2: number;
2203
+ y1: number;
2204
+ y2: number;
2205
+ } | {
2206
+ type: "schematic_component";
2207
+ source_component_id: string;
2208
+ schematic_component_id: string;
2209
+ rotation: number;
2210
+ size: {
2211
+ width: number;
2212
+ height: number;
2213
+ };
2214
+ center: {
2215
+ x: number;
2216
+ y: number;
2217
+ };
2218
+ pin_spacing?: number | undefined;
2219
+ pin_styles?: Record<string, {
2220
+ left_margin?: number | undefined;
2221
+ right_margin?: number | undefined;
2222
+ top_margin?: number | undefined;
2223
+ bottom_margin?: number | undefined;
2224
+ }> | undefined;
2225
+ box_width?: number | undefined;
2226
+ symbol_name?: string | undefined;
2227
+ port_arrangement?: {
2228
+ left_size: number;
2229
+ right_size: number;
2230
+ top_size?: number | undefined;
2231
+ bottom_size?: number | undefined;
2232
+ } | {
2233
+ left_side?: {
2234
+ pins: number[];
2235
+ direction?: "top-to-bottom" | "bottom-to-top" | undefined;
2236
+ } | undefined;
2237
+ right_side?: {
2238
+ pins: number[];
2239
+ direction?: "top-to-bottom" | "bottom-to-top" | undefined;
2240
+ } | undefined;
2241
+ top_side?: {
2242
+ pins: number[];
2243
+ direction?: "left-to-right" | "right-to-left" | undefined;
2244
+ } | undefined;
2245
+ bottom_side?: {
2246
+ pins: number[];
2247
+ direction?: "left-to-right" | "right-to-left" | undefined;
2248
+ } | undefined;
2249
+ } | undefined;
2250
+ port_labels?: Record<string, string> | undefined;
2251
+ } | {
2252
+ type: "schematic_port";
2253
+ source_port_id: string;
2254
+ center: {
2255
+ x: number;
2256
+ y: number;
2257
+ };
2258
+ schematic_port_id: string;
2259
+ schematic_component_id?: string | undefined;
2260
+ facing_direction?: "left" | "right" | "up" | "down" | undefined;
2261
+ } | {
2262
+ type: "schematic_trace";
2263
+ source_trace_id: string;
2264
+ schematic_trace_id: string;
2265
+ edges: {
2266
+ from: {
2267
+ x: number;
2268
+ y: number;
2269
+ };
2270
+ to: {
2271
+ x: number;
2272
+ y: number;
2273
+ };
2274
+ from_schematic_port_id?: string | undefined;
2275
+ to_schematic_port_id?: string | undefined;
2276
+ }[];
2277
+ } | {
2278
+ type: "schematic_path";
2279
+ schematic_component_id: string;
2280
+ points: {
2281
+ x: number;
2282
+ y: number;
2283
+ }[];
2284
+ fill_color?: "red" | "blue" | undefined;
2285
+ is_filled?: boolean | undefined;
2286
+ } | {
2287
+ message: string;
2288
+ type: "schematic_error";
2289
+ schematic_error_id: string;
2290
+ error_type: "schematic_port_not_found";
2291
+ } | {
2292
+ type: "schematic_net_label";
2293
+ source_net_id: string;
2294
+ center: {
2295
+ x: number;
2296
+ y: number;
2297
+ };
2298
+ text: string;
2299
+ anchor_side: "left" | "right" | "top" | "bottom";
2300
+ } | {
2301
+ type: "cad_component";
2302
+ source_component_id: string;
2303
+ position: {
2304
+ x: number;
2305
+ y: number;
2306
+ z: number;
2307
+ };
2308
+ pcb_component_id: string;
2309
+ cad_component_id: string;
2310
+ rotation?: {
2311
+ x: number;
2312
+ y: number;
2313
+ z: number;
2314
+ } | undefined;
2315
+ size?: {
2316
+ x: number;
2317
+ y: number;
2318
+ z: number;
2319
+ } | undefined;
2320
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
2321
+ footprinter_string?: string | undefined;
2322
+ model_obj_url?: string | undefined;
2323
+ model_stl_url?: string | undefined;
2324
+ model_3mf_url?: string | undefined;
2325
+ model_jscad?: any;
2326
+ })[];
2327
+
2328
+ declare const directionToVec: (direction: "up" | "down" | "left" | "right") => {
2329
+ x: number;
2330
+ y: number;
2331
+ };
2332
+ declare const vecToDirection: ({ x, y }: {
2333
+ x: number;
2334
+ y: number;
2335
+ }) => "left" | "right" | "up" | "down";
2336
+ declare const rotateClockwise: (direction: "up" | "down" | "left" | "right") => "left" | "right" | "up" | "down";
2337
+ declare const rotateCounterClockwise: (direction: "up" | "down" | "left" | "right") => "left" | "right" | "up" | "down";
2338
+ declare const rotateDirection: (direction: "up" | "down" | "left" | "right", num90DegreeClockwiseTurns: number) => "left" | "right" | "up" | "down";
2339
+ declare const oppositeDirection: (direction: "up" | "down" | "left" | "right") => "left" | "right" | "up" | "down";
2340
+ declare const oppositeSide: (sideOrDir: "up" | "down" | "top" | "bottom" | "left" | "right") => "left" | "right" | "top" | "bottom";
2341
+
2342
+ /**
2343
+ * Filter elements to match the selector, e.g. to access the left port of a
2344
+ * resistor you can do ".R1 > port.left"
2345
+ */
2346
+ declare const applySelector: (elements: AnySoupElement[], selectorRaw: string) => AnySoupElement[];
2347
+ declare const applySelectorAST: (elements: AnySoupElement[], selectorAST: parsel.AST) => AnySoupElement[];
2348
+
2349
+ declare const getElementById: (soup: AnySoupElement[], id: string) => AnySoupElement | null;
2350
+
2351
+ declare const getElementId: (elm: AnySoupElement) => string;
2352
+
2353
+ declare function getReadableNameForPcbTrace(soup: AnySoupElement[], pcb_trace_id: string): string;
2354
+
2355
+ declare function getReadableNameForPcbSmtpad(soup: AnySoupElement[], pcb_smtpad_id: string): string;
2356
+
2357
+ declare const getReadableNameForPcbPort: (soup: AnySoupElement[], pcb_port_id: string) => string;
2358
+
2359
+ declare const getReadableNameForElement: (soup: AnySoupElement[], elm: AnySoupElement | string) => string;
2360
+
2361
+ declare const getBoundsOfPcbElements: (elements: AnyCircuitElement[]) => {
2362
+ minX: number;
2363
+ minY: number;
2364
+ maxX: number;
2365
+ maxY: number;
2366
+ };
2367
+
2368
+ export { type GetSoupUtilFn, type SoupInputUtilObjects, type SoupUtilObjects, type SoupUtilOptions, applySelector, applySelectorAST, directionToVec, getBoundsOfPcbElements, getElementById, getElementId, getReadableNameForElement, getReadableNameForPcbPort, getReadableNameForPcbSmtpad, getReadableNameForPcbTrace, oppositeDirection, oppositeSide, rotateClockwise, rotateCounterClockwise, rotateDirection, su, transformPCBElement, transformPCBElements, transformSchematicElement, transformSchematicElements, vecToDirection };