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