circuit-json 0.0.79 → 0.0.81

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.
package/dist/index.d.mts CHANGED
@@ -2098,6 +2098,7 @@ declare const pcb_trace: z.ZodObject<{
2098
2098
  pcb_component_id: z.ZodOptional<z.ZodString>;
2099
2099
  pcb_trace_id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
2100
2100
  route_thickness_mode: z.ZodOptional<z.ZodDefault<z.ZodEnum<["constant", "interpolated"]>>>;
2101
+ route_order_index: z.ZodOptional<z.ZodNumber>;
2101
2102
  should_round_corners: z.ZodOptional<z.ZodBoolean>;
2102
2103
  route: z.ZodArray<z.ZodUnion<[z.ZodObject<{
2103
2104
  route_type: z.ZodLiteral<"wire">;
@@ -2173,6 +2174,7 @@ declare const pcb_trace: z.ZodObject<{
2173
2174
  source_trace_id?: string | undefined;
2174
2175
  pcb_component_id?: string | undefined;
2175
2176
  route_thickness_mode?: "constant" | "interpolated" | undefined;
2177
+ route_order_index?: number | undefined;
2176
2178
  should_round_corners?: boolean | undefined;
2177
2179
  }, {
2178
2180
  type: "pcb_trace";
@@ -2197,6 +2199,7 @@ declare const pcb_trace: z.ZodObject<{
2197
2199
  pcb_component_id?: string | undefined;
2198
2200
  pcb_trace_id?: string | undefined;
2199
2201
  route_thickness_mode?: "constant" | "interpolated" | undefined;
2202
+ route_order_index?: number | undefined;
2200
2203
  should_round_corners?: boolean | undefined;
2201
2204
  }>;
2202
2205
  type PcbTraceInput = z.input<typeof pcb_trace>;
@@ -2225,6 +2228,13 @@ interface PcbTrace {
2225
2228
  source_trace_id?: string;
2226
2229
  pcb_component_id?: string;
2227
2230
  pcb_trace_id: string;
2231
+ /**
2232
+ * The order that this trace was routed in. This can be used to debug the
2233
+ * autorouter and to understand the trace path better
2234
+ *
2235
+ * The route_order_index should be relative to a subcircuit
2236
+ */
2237
+ route_order_index?: number;
2228
2238
  route_thickness_mode?: "constant" | "interpolated";
2229
2239
  should_round_corners?: boolean;
2230
2240
  route: Array<PcbTraceRoutePoint>;
@@ -2439,6 +2449,8 @@ declare const pcb_board: z.ZodObject<{
2439
2449
  x: string | number;
2440
2450
  y: string | number;
2441
2451
  }>;
2452
+ thickness: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>>;
2453
+ num_layers: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
2442
2454
  outline: z.ZodOptional<z.ZodArray<z.ZodObject<{
2443
2455
  x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
2444
2456
  y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
@@ -2458,6 +2470,8 @@ declare const pcb_board: z.ZodObject<{
2458
2470
  y: number;
2459
2471
  };
2460
2472
  pcb_board_id: string;
2473
+ thickness: number;
2474
+ num_layers: number;
2461
2475
  outline?: {
2462
2476
  x: number;
2463
2477
  y: number;
@@ -2471,6 +2485,8 @@ declare const pcb_board: z.ZodObject<{
2471
2485
  y: string | number;
2472
2486
  };
2473
2487
  pcb_board_id?: string | undefined;
2488
+ thickness?: string | number | undefined;
2489
+ num_layers?: number | undefined;
2474
2490
  outline?: {
2475
2491
  x: string | number;
2476
2492
  y: string | number;
@@ -2484,6 +2500,8 @@ interface PcbBoard {
2484
2500
  pcb_board_id: string;
2485
2501
  width: Length;
2486
2502
  height: Length;
2503
+ thickness: Length;
2504
+ num_layers: number;
2487
2505
  center: Point;
2488
2506
  outline?: Point[];
2489
2507
  }
@@ -4115,6 +4133,7 @@ declare const any_circuit_element: z.ZodUnion<[z.ZodObject<{
4115
4133
  pcb_component_id: z.ZodOptional<z.ZodString>;
4116
4134
  pcb_trace_id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
4117
4135
  route_thickness_mode: z.ZodOptional<z.ZodDefault<z.ZodEnum<["constant", "interpolated"]>>>;
4136
+ route_order_index: z.ZodOptional<z.ZodNumber>;
4118
4137
  should_round_corners: z.ZodOptional<z.ZodBoolean>;
4119
4138
  route: z.ZodArray<z.ZodUnion<[z.ZodObject<{
4120
4139
  route_type: z.ZodLiteral<"wire">;
@@ -4151,6 +4170,9 @@ declare const any_circuit_element: z.ZodUnion<[z.ZodObject<{
4151
4170
  start_pcb_port_id?: string | undefined;
4152
4171
  end_pcb_port_id?: string | undefined;
4153
4172
  }>, z.ZodObject<{
4173
+ /**
4174
+ * @deprecated use AnyCircuitElement instead
4175
+ */
4154
4176
  route_type: z.ZodLiteral<"via">;
4155
4177
  x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4156
4178
  y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
@@ -4190,6 +4212,7 @@ declare const any_circuit_element: z.ZodUnion<[z.ZodObject<{
4190
4212
  source_trace_id?: string | undefined;
4191
4213
  pcb_component_id?: string | undefined;
4192
4214
  route_thickness_mode?: "constant" | "interpolated" | undefined;
4215
+ route_order_index?: number | undefined;
4193
4216
  should_round_corners?: boolean | undefined;
4194
4217
  }, {
4195
4218
  type: "pcb_trace";
@@ -4214,6 +4237,7 @@ declare const any_circuit_element: z.ZodUnion<[z.ZodObject<{
4214
4237
  pcb_component_id?: string | undefined;
4215
4238
  pcb_trace_id?: string | undefined;
4216
4239
  route_thickness_mode?: "constant" | "interpolated" | undefined;
4240
+ route_order_index?: number | undefined;
4217
4241
  should_round_corners?: boolean | undefined;
4218
4242
  }>, z.ZodObject<{
4219
4243
  type: z.ZodLiteral<"pcb_via">;
@@ -4382,6 +4406,8 @@ declare const any_circuit_element: z.ZodUnion<[z.ZodObject<{
4382
4406
  x: string | number;
4383
4407
  y: string | number;
4384
4408
  }>;
4409
+ thickness: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>>;
4410
+ num_layers: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4385
4411
  outline: z.ZodOptional<z.ZodArray<z.ZodObject<{
4386
4412
  x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4387
4413
  y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
@@ -4401,6 +4427,8 @@ declare const any_circuit_element: z.ZodUnion<[z.ZodObject<{
4401
4427
  y: number;
4402
4428
  };
4403
4429
  pcb_board_id: string;
4430
+ thickness: number;
4431
+ num_layers: number;
4404
4432
  outline?: {
4405
4433
  x: number;
4406
4434
  y: number;
@@ -4414,6 +4442,8 @@ declare const any_circuit_element: z.ZodUnion<[z.ZodObject<{
4414
4442
  y: string | number;
4415
4443
  };
4416
4444
  pcb_board_id?: string | undefined;
4445
+ thickness?: string | number | undefined;
4446
+ num_layers?: number | undefined;
4417
4447
  outline?: {
4418
4448
  x: string | number;
4419
4449
  y: string | number;
@@ -6335,6 +6365,7 @@ declare const any_soup_element: z.ZodUnion<[z.ZodObject<{
6335
6365
  pcb_component_id: z.ZodOptional<z.ZodString>;
6336
6366
  pcb_trace_id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
6337
6367
  route_thickness_mode: z.ZodOptional<z.ZodDefault<z.ZodEnum<["constant", "interpolated"]>>>;
6368
+ route_order_index: z.ZodOptional<z.ZodNumber>;
6338
6369
  should_round_corners: z.ZodOptional<z.ZodBoolean>;
6339
6370
  route: z.ZodArray<z.ZodUnion<[z.ZodObject<{
6340
6371
  route_type: z.ZodLiteral<"wire">;
@@ -6371,6 +6402,9 @@ declare const any_soup_element: z.ZodUnion<[z.ZodObject<{
6371
6402
  start_pcb_port_id?: string | undefined;
6372
6403
  end_pcb_port_id?: string | undefined;
6373
6404
  }>, z.ZodObject<{
6405
+ /**
6406
+ * @deprecated use AnyCircuitElement instead
6407
+ */
6374
6408
  route_type: z.ZodLiteral<"via">;
6375
6409
  x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
6376
6410
  y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
@@ -6410,6 +6444,7 @@ declare const any_soup_element: z.ZodUnion<[z.ZodObject<{
6410
6444
  source_trace_id?: string | undefined;
6411
6445
  pcb_component_id?: string | undefined;
6412
6446
  route_thickness_mode?: "constant" | "interpolated" | undefined;
6447
+ route_order_index?: number | undefined;
6413
6448
  should_round_corners?: boolean | undefined;
6414
6449
  }, {
6415
6450
  type: "pcb_trace";
@@ -6434,6 +6469,7 @@ declare const any_soup_element: z.ZodUnion<[z.ZodObject<{
6434
6469
  pcb_component_id?: string | undefined;
6435
6470
  pcb_trace_id?: string | undefined;
6436
6471
  route_thickness_mode?: "constant" | "interpolated" | undefined;
6472
+ route_order_index?: number | undefined;
6437
6473
  should_round_corners?: boolean | undefined;
6438
6474
  }>, z.ZodObject<{
6439
6475
  type: z.ZodLiteral<"pcb_via">;
@@ -6602,6 +6638,8 @@ declare const any_soup_element: z.ZodUnion<[z.ZodObject<{
6602
6638
  x: string | number;
6603
6639
  y: string | number;
6604
6640
  }>;
6641
+ thickness: z.ZodDefault<z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>>;
6642
+ num_layers: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6605
6643
  outline: z.ZodOptional<z.ZodArray<z.ZodObject<{
6606
6644
  x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
6607
6645
  y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
@@ -6621,6 +6659,8 @@ declare const any_soup_element: z.ZodUnion<[z.ZodObject<{
6621
6659
  y: number;
6622
6660
  };
6623
6661
  pcb_board_id: string;
6662
+ thickness: number;
6663
+ num_layers: number;
6624
6664
  outline?: {
6625
6665
  x: number;
6626
6666
  y: number;
@@ -6634,6 +6674,8 @@ declare const any_soup_element: z.ZodUnion<[z.ZodObject<{
6634
6674
  y: string | number;
6635
6675
  };
6636
6676
  pcb_board_id?: string | undefined;
6677
+ thickness?: string | number | undefined;
6678
+ num_layers?: number | undefined;
6637
6679
  outline?: {
6638
6680
  x: string | number;
6639
6681
  y: string | number;
package/dist/index.mjs CHANGED
@@ -642,6 +642,7 @@ var pcb_trace = z40.object({
642
642
  pcb_component_id: z40.string().optional(),
643
643
  pcb_trace_id: getZodPrefixedIdWithDefault("pcb_trace"),
644
644
  route_thickness_mode: z40.enum(["constant", "interpolated"]).default("constant").optional(),
645
+ route_order_index: z40.number().optional(),
645
646
  should_round_corners: z40.boolean().optional(),
646
647
  route: z40.array(
647
648
  z40.union([
@@ -718,6 +719,8 @@ var pcb_board = z44.object({
718
719
  width: length,
719
720
  height: length,
720
721
  center: point,
722
+ thickness: length.optional().default(1.4),
723
+ num_layers: z44.number().optional().default(4),
721
724
  outline: z44.array(point).optional()
722
725
  }).describe("Defines the board outline of the PCB");
723
726
  expectTypesMatch(true);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/convert-si-unit-to-number.ts","../src/units/index.ts","../src/common/point.ts","../src/common/point3.ts","../src/common/size.ts","../src/common/getZodPrefixedIdWithDefault.ts","../src/source/source_simple_capacitor.ts","../src/pcb/properties/supplier_name.ts","../src/source/base/source_component_base.ts","../src/source/source_simple_resistor.ts","../src/source/source_simple_diode.ts","../src/source/source_simple_ground.ts","../src/source/source_simple_bug.ts","../src/source/source_simple_chip.ts","../src/source/source_simple_inductor.ts","../src/source/source_led.ts","../src/source/source_simple_power_source.ts","../src/source/any_source_component.ts","../src/source/source_port.ts","../src/source/source_trace.ts","../src/source/source_group.ts","../src/source/source_net.ts","../src/schematic/schematic_box.ts","../src/schematic/schematic_path.ts","../src/schematic/schematic_component.ts","../src/schematic/schematic_line.ts","../src/schematic/schematic_trace.ts","../src/schematic/schematic_text.ts","../src/schematic/schematic_port.ts","../src/schematic/schematic_net_label.ts","../src/schematic/schematic_error.ts","../src/pcb/properties/layer_ref.ts","../src/pcb/properties/pcb_route_hints.ts","../src/pcb/properties/route_hint_point.ts","../src/pcb/pcb_component.ts","../src/utils/expect-types-match.ts","../src/pcb/pcb_hole.ts","../src/pcb/pcb_plated_hole.ts","../src/pcb/pcb_port.ts","../src/pcb/pcb_smtpad.ts","../src/pcb/pcb_text.ts","../src/pcb/pcb_trace.ts","../src/pcb/pcb_trace_error.ts","../src/pcb/pcb_port_not_matched_error.ts","../src/pcb/pcb_via.ts","../src/pcb/pcb_board.ts","../src/pcb/pcb_placement_error.ts","../src/pcb/pcb_trace_hint.ts","../src/pcb/pcb_silkscreen_line.ts","../src/pcb/pcb_silkscreen_path.ts","../src/pcb/pcb_silkscreen_text.ts","../src/pcb/pcb_silkscreen_rect.ts","../src/pcb/pcb_silkscreen_circle.ts","../src/pcb/pcb_silkscreen_oval.ts","../src/pcb/pcb_fabrication_note_text.ts","../src/pcb/pcb_fabrication_note_path.ts","../src/pcb/pcb_keepout.ts","../src/cad/cad_component.ts","../src/any_circuit_element.ts"],"sourcesContent":["import convertUnits from \"convert-units\"\n\nconst si_prefix_multiplier = {\n tera: 10e12,\n T: 10e12,\n giga: 10e9,\n G: 10e9,\n mega: 10e6,\n M: 10e6,\n kilo: 10e3,\n k: 10e3,\n deci: 10e-1,\n d: 10e-1,\n centi: 10e-2,\n c: 10e-2,\n milli: 10e-3,\n m: 10e-3,\n micro: 10e-6,\n u: 10e-6,\n µ: 10e-6,\n nano: 10e-9,\n n: 10e-9,\n pico: 10e-12,\n p: 10e-12,\n}\nconst si_prefixes = Object.keys(si_prefix_multiplier)\n\nconst target_conversion = {\n mass: \"g\",\n length: \"mm\",\n time: \"ms\",\n volume: \"ml\",\n angle: \"deg\",\n}\n\nfunction getSiPrefixMultiplierFromUnit(v: string): number {\n for (const prefix of si_prefixes) {\n if (v.startsWith(prefix)) {\n return si_prefix_multiplier[prefix as keyof typeof si_prefix_multiplier]\n }\n }\n return 1\n}\n\nexport const parseAndConvertSiUnit = <\n T extends\n | string\n | number\n | undefined\n | { x: string | number; y: string | number },\n>(\n v: T,\n): {\n unit: string | null\n value: T extends { x: string | number; y: string | number }\n ? null | { x: number; y: number }\n : null | number\n} => {\n if (typeof v === \"undefined\") return { unit: null, value: null }\n if (typeof v === \"string\" && v.match(/^[\\d\\.]+$/))\n return { value: parseFloat(v) as any, unit: null }\n if (typeof v === \"number\") return { value: v as any, unit: null }\n if (typeof v === \"object\" && \"x\" in v && \"y\" in v) {\n return {\n unit: parseAndConvertSiUnit(v.x).unit,\n value: {\n x: parseAndConvertSiUnit(v.x as any).value as number,\n y: parseAndConvertSiUnit(v.y as any).value as number,\n } as any,\n }\n }\n const unit_reversed = v\n .split(\"\")\n .reverse()\n .join(\"\")\n .match(/[a-zA-Z]+/)?.[0]\n if (!unit_reversed) {\n throw new Error(`Could not determine unit: \"${v}\"`)\n }\n const unit = unit_reversed.split(\"\").reverse().join(\"\")\n const value = v.slice(0, -unit.length)\n let measure\n try {\n measure = convertUnits().describe(unit as any)?.measure\n } catch (e) {}\n if (measure) {\n const target_unit = (target_conversion as any)[measure]\n if (!target_unit) {\n throw new Error(\n `Could not determine target unit for measure: \"${measure}\"`,\n )\n }\n return {\n unit,\n value: convertUnits(parseFloat(value))\n .from(unit as any)\n .to(target_unit) as any,\n }\n } else {\n return {\n unit,\n value: (getSiPrefixMultiplierFromUnit(unit) * parseFloat(value)) as any,\n }\n }\n}\n","import { parseAndConvertSiUnit } from \"src/utils/convert-si-unit-to-number\"\nimport { z } from \"zod\"\n\n// // Currently, removing uncommon SI Prefixes for type simplicity.\n// export type SIPrefix =\n// // | \"y\"\n// // | \"yocto\"\n// // | \"z\"\n// // | \"zepto\"\n// // | \"atto\"\n// // | \"a\"\n// | \"femto\"\n// | \"f\"\n// | \"u\"\n// | \"micro\"\n// // | \"d\"\n// // | \"deci\"\n// | \"c\"\n// | \"centi\"\n// | \"m\"\n// | \"milli\"\n// | \"k\"\n// | \"kilo\"\n// | \"M\"\n// | \"mega\"\n// // | \"G\"\n// // | \"T\"\n// // | \"P\"\n// // | \"E\"\n// // | \"Z\"\n// // | \"Y\"\n\n// export type UnitAbbreviations = {\n// farad: \"F\"\n// ohm: \"Ω\"\n// henry: \"H\"\n// meter: \"m\"\n// volt: \"V\"\n// inch: \"in\"\n// foot: \"ft\"\n// }\n\n// export type Unit = keyof UnitAbbreviations\n// export type NumberWithUnit<T extends Unit> =\n// | `${number}${T | UnitAbbreviations[T]}`\n// | `${number} ${T | UnitAbbreviations[T]}`\n// | `${number}${SIPrefix}${T | UnitAbbreviations[T]}`\n// | `${number} ${SIPrefix}${T | UnitAbbreviations[T]}`\n// export type NumberWithAnyUnit =\n// | `${number}${UnitOrAbbreviation}`\n// | `${number} ${UnitOrAbbreviation}`\n// | `${number}${SIPrefix}${UnitOrAbbreviation}`\n// | `${number} ${SIPrefix}${UnitOrAbbreviation}`\n\n// TODO lots of validation to make sure the unit is valid etc.\nexport const resistance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const capacitance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const inductance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const voltage = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const length = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n/**\n * Length in meters\n */\nexport type Length = number\nexport type Distance = number\n\nexport const distance = length\n\nexport const current = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const time = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\n/**\n * Rotation is always converted to degrees\n */\nexport const rotation = z\n .string()\n .or(z.number())\n .transform((arg): number => {\n if (typeof arg === \"number\") return arg\n if (arg.endsWith(\"deg\")) {\n return Number.parseFloat(arg.split(\"deg\")[0]!)\n }\n if (arg.endsWith(\"rad\")) {\n return (Number.parseFloat(arg.split(\"rad\")[0]!) * 180) / Math.PI\n }\n return Number.parseFloat(arg)\n })\n\nexport type InputRotation = number | string\nexport type Rotation = number\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport const position = point\n\nexport type Point = z.infer<typeof point>\nexport type InputPoint = z.input<typeof point>\nexport type InputPosition = z.input<typeof position>\nexport type Position = z.infer<typeof position>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n\nexport const position3 = point3\n\nexport type Point3 = z.infer<typeof point3>\n","import { z } from \"zod\"\n\nexport const size = z.object({\n width: z.number(),\n height: z.number(),\n})\n\nexport type Size = z.infer<typeof size>\n","import { z } from \"zod\"\nimport { nanoid } from \"nanoid\"\n\n/**\n * Use this for primary keys for any circuit element\n */\nexport const getZodPrefixedIdWithDefault = (prefix: string) => {\n return z\n .string()\n .optional()\n .default(() => `${prefix}_${nanoid(10)}`)\n}\n","import { z } from \"zod\"\nimport { source_component_base } from \"src/source/base/source_component_base\"\nimport { capacitance } from \"src/units\"\n\nexport const source_simple_capacitor = source_component_base.extend({\n ftype: z.literal(\"simple_capacitor\"),\n capacitance,\n})\n\nexport type SourceSimpleCapacitor = z.infer<typeof source_simple_capacitor>\nexport type SourceSimpleCapacitorInput = z.input<typeof source_simple_capacitor>\n","import { z } from \"zod\"\n\nexport const supplier_name = z.enum([\n \"jlcpcb\",\n \"macrofab\",\n \"pcbway\",\n \"digikey\",\n \"mouser\",\n \"lcsc\",\n])\n\nexport type SupplierName = z.infer<typeof supplier_name>\n","import { supplier_name } from \"src/pcb/properties/supplier_name\"\nimport { z } from \"zod\"\n\nexport const source_component_base = z.object({\n type: z.literal(\"source_component\"),\n ftype: z.string().optional(),\n source_component_id: z.string(),\n name: z.string(),\n manufacturer_part_number: z.string().optional(),\n supplier_part_numbers: z\n .record(supplier_name, z.array(z.string()))\n .optional(),\n})\n\nexport type SourceComponentBase = z.infer<typeof source_component_base>\n","import { z } from \"zod\"\nimport { source_component_base } from \"src/source/base/source_component_base\"\nimport { resistance } from \"src/units\"\n\nexport const source_simple_resistor = source_component_base.extend({\n ftype: z.literal(\"simple_resistor\"),\n resistance,\n})\n\nexport type SourceSimpleResistor = z.infer<typeof source_simple_resistor>\nexport type SourceSimpleResistorInput = z.input<typeof source_simple_resistor>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_diode = source_component_base.extend({\n ftype: z.literal(\"simple_diode\"),\n})\n\nexport type SourceSimpleDiode = z.infer<typeof source_simple_diode>\nexport type SourceSimpleDiodeInput = z.input<typeof source_simple_diode>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_ground = source_component_base.extend({\n ftype: z.literal(\"simple_ground\"),\n})\n\nexport type SourceSimpleGround = z.infer<typeof source_simple_ground>\nexport type SourceSimpleGroundInput = z.input<typeof source_simple_ground>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use source_simple_chip instead. This will be removed in a future version.\n */\nexport const source_simple_bug = source_component_base\n .extend({\n ftype: z.literal(\"simple_bug\"),\n })\n .describe(\"@deprecated\")\n\nexport type source_simple_bug = z.infer<typeof source_simple_bug>\nexport type SourceSimpleBugInput = z.input<typeof source_simple_bug>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_chip = source_component_base.extend({\n ftype: z.literal(\"simple_chip\"),\n})\n\nexport type SourceSimpleChip = z.infer<typeof source_simple_chip>\nexport type SourceSimpleChipInput = z.input<typeof source_simple_chip>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { inductance } from \"../units\"\n\nconst source_simple_inductor = source_component_base.extend({\n ftype: z.literal(\"simple_inductor\"),\n inductance,\n})\n\nexport type SourceSimpleInductor = z.infer<typeof source_simple_inductor>\nexport type SourceSimpleInductorInput = z.input<typeof source_simple_inductor>\n","import { z } from \"zod\"\nimport { source_simple_diode } from \"./source_simple_diode\"\n\nexport const source_led = source_simple_diode.extend({\n ftype: z.literal(\"led\"),\n})\n\nexport type SourceLed = z.infer<typeof source_led>\nexport type SourceLedInput = z.input<typeof source_led>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { voltage } from \"../units\"\n\nexport const source_simple_power_source = source_component_base.extend({\n ftype: z.literal(\"simple_power_source\"),\n voltage,\n})\n\nexport type SourceSimplePowerSource = z.infer<typeof source_simple_power_source>\nexport type SourceSimplePowerSourceInput = z.input<\n typeof source_simple_power_source\n>\n","import { z } from \"zod\"\nimport { source_simple_resistor } from \"./source_simple_resistor\"\nimport { source_simple_capacitor } from \"./source_simple_capacitor\"\nimport { source_simple_diode } from \"./source_simple_diode\"\nimport { source_simple_ground } from \"./source_simple_ground\"\nimport { source_simple_bug } from \"./source_simple_bug\"\nimport { source_simple_chip } from \"./source_simple_chip\"\nimport { source_led } from \"./source_led\"\nimport { source_simple_power_source } from \"./source_simple_power_source\"\n\nexport const any_source_component = z.union([\n source_simple_resistor,\n source_simple_capacitor,\n source_simple_diode,\n source_simple_ground,\n source_simple_chip,\n source_simple_bug,\n source_led,\n source_simple_power_source,\n])\n\nexport type AnySourceComponent = z.infer<typeof any_source_component>\n","import { z } from \"zod\"\n\nexport const source_port = z.object({\n type: z.literal(\"source_port\"),\n pin_number: z.number().optional(),\n port_hints: z.array(z.string()).optional(),\n name: z.string(),\n source_port_id: z.string(),\n source_component_id: z.string(),\n})\n\nexport type SourcePort = z.infer<typeof source_port>\n","import { z } from \"zod\"\n\nexport const source_trace = z.object({\n type: z.literal(\"source_trace\"),\n source_trace_id: z.string(),\n connected_source_port_ids: z.array(z.string()),\n connected_source_net_ids: z.array(z.string()),\n})\n\nexport type SourceTrace = z.infer<typeof source_trace>\n","import { z } from \"zod\"\n\nexport const source_group = z.object({\n type: z.literal(\"source_group\"),\n source_group_id: z.string(),\n name: z.string().optional(),\n})\n\nexport type SourceGroup = z.infer<typeof source_group>\nexport type SourceGroupInput = z.input<typeof source_group>\n","import { z } from \"zod\"\n\nexport const source_net = z.object({\n type: z.literal(\"source_net\"),\n source_net_id: z.string(),\n name: z.string(),\n member_source_group_ids: z.array(z.string()),\n is_power: z.boolean().optional(),\n is_ground: z.boolean().optional(),\n is_digital_signal: z.boolean().optional(),\n is_analog_signal: z.boolean().optional(),\n trace_width: z.number().optional(),\n})\n\nexport type SourceNet = z.infer<typeof source_net>\nexport type SourceNetInput = z.input<typeof source_net>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_box = z\n .object({\n type: z.literal(\"schematic_box\"),\n schematic_component_id: z.string(),\n width: distance,\n height: distance,\n x: distance,\n y: distance,\n })\n .describe(\"Draws a box on the schematic\")\n\nexport type SchematicBoxInput = z.input<typeof schematic_box>\nexport type SchematicBox = z.infer<typeof schematic_box>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const schematic_path = z.object({\n type: z.literal(\"schematic_path\"),\n schematic_component_id: z.string(),\n fill_color: z.enum([\"red\", \"blue\"]).optional(),\n is_filled: z.boolean().optional(),\n points: z.array(point),\n})\n\nexport type SchematicPathInput = z.input<typeof schematic_path>\nexport type SchematicPath = z.infer<typeof schematic_path>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\nimport { size } from \"../common/size\"\nimport { length, rotation } from \"../units\"\n\nexport const schematic_pin_styles = z.record(\n z.object({\n left_margin: length.optional(),\n right_margin: length.optional(),\n top_margin: length.optional(),\n bottom_margin: length.optional(),\n }),\n)\n\nexport const schematic_component = z.object({\n type: z.literal(\"schematic_component\"),\n rotation: rotation.default(0),\n size,\n center: point,\n source_component_id: z.string(),\n schematic_component_id: z.string(),\n pin_spacing: length.optional(),\n pin_styles: schematic_pin_styles.optional(),\n box_width: length.optional(),\n symbol_name: z.string().optional(),\n port_arrangement: z\n .union([\n z.object({\n left_size: z.number(),\n right_size: z.number(),\n top_size: z.number().optional(),\n bottom_size: z.number().optional(),\n }),\n z.object({\n left_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n right_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n top_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n bottom_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n }),\n ])\n .optional(),\n port_labels: z.record(z.string()).optional(),\n})\n\nexport type SchematicComponentInput = z.input<typeof schematic_component>\nexport type SchematicComponent = z.infer<typeof schematic_component>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_line = z.object({\n type: z.literal(\"schematic_line\"),\n schematic_component_id: z.string(),\n x1: distance,\n x2: distance,\n y1: distance,\n y2: distance,\n})\n\nexport type SchematicLineInput = z.input<typeof schematic_line>\nexport type SchematicLine = z.infer<typeof schematic_line>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_trace = z.object({\n type: z.literal(\"schematic_trace\"),\n schematic_trace_id: z.string(),\n source_trace_id: z.string(),\n edges: z.array(\n z.object({\n from: z.object({\n x: z.number(),\n y: z.number(),\n }),\n to: z.object({\n x: z.number(),\n y: z.number(),\n }),\n from_schematic_port_id: z.string().optional(),\n to_schematic_port_id: z.string().optional(),\n }),\n ),\n})\n\nexport type SchematicTraceInput = z.input<typeof schematic_trace>\nexport type SchematicTrace = z.infer<typeof schematic_trace>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_text = z.object({\n type: z.literal(\"schematic_text\"),\n schematic_component_id: z.string(),\n schematic_text_id: z.string(),\n text: z.string(),\n position: z.object({\n x: distance,\n y: distance,\n }),\n rotation: z.number().default(0),\n anchor: z\n .enum([\"center\", \"left\", \"right\", \"top\", \"bottom\"])\n .default(\"center\"),\n})\n\nexport type SchematicTextInput = z.input<typeof schematic_text>\nexport type SchematicText = z.infer<typeof schematic_text>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { point } from \"../common\"\n\nexport const schematic_port = z\n .object({\n type: z.literal(\"schematic_port\"),\n schematic_port_id: z.string(),\n source_port_id: z.string(),\n schematic_component_id: z.string().optional(),\n center: point,\n facing_direction: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n })\n .describe(\"Defines a port on a schematic component\")\n\nexport type SchematicPortInput = z.input<typeof schematic_port>\nexport type SchematicPort = z.infer<typeof schematic_port>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const schematic_net_label = z.object({\n type: z.literal(\"schematic_net_label\"),\n source_net_id: z.string(),\n center: point,\n anchor_side: z.enum([\"top\", \"bottom\", \"left\", \"right\"]),\n text: z.string(),\n})\n\nexport type SchematicNetLabelInput = z.input<typeof schematic_net_label>\nexport type SchematicNetLabel = z.infer<typeof schematic_net_label>\n","import { z } from \"zod\"\n\nexport const schematic_error = z\n .object({\n schematic_error_id: z.string(),\n type: z.literal(\"schematic_error\"),\n // eventually each error type should be broken out into a dir of files\n error_type: z.literal(\"schematic_port_not_found\"),\n message: z.string(),\n })\n .describe(\"Defines a schematic error on the schematic\")\n\nexport type SchematicErrorInput = z.input<typeof schematic_error>\nexport type SchematicError = z.infer<typeof schematic_error>\n","import { z } from \"zod\"\n\nexport const all_layers = [\n \"top\",\n \"bottom\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\",\n] as const\n\nexport const layer_string = z.enum(all_layers)\n\nexport const layer_ref = layer_string\n .or(\n z.object({\n name: layer_string,\n }),\n )\n .transform((layer) => {\n if (typeof layer === \"string\") {\n return layer\n }\n return layer.name\n })\n\nexport type LayerRefInput = z.input<typeof layer_ref>\nexport type LayerRef = z.output<typeof layer_ref>\n\nexport const visible_layer = z.enum([\"top\", \"bottom\"])\nexport type VisibleLayerRef = z.infer<typeof visible_layer>\nexport type VisibleLayer = z.infer<typeof visible_layer>\n","import { z } from \"zod\"\nimport { distance } from \"src/units\"\nimport { layer_ref } from \"./layer_ref\"\n\n// x: string | number\n// y: string | number\n// via?: boolean\n// via_to_layer?: string\nexport const pcb_route_hint = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n via_to_layer: layer_ref.optional(),\n})\nexport const pcb_route_hints = z.array(pcb_route_hint)\n\nexport type PcbRouteHintInput = z.input<typeof pcb_route_hint>\nexport type PcbRouteHintsInput = z.input<typeof pcb_route_hints>\nexport type PcbRouteHint = z.output<typeof pcb_route_hint>\nexport type PcbRouteHints = z.output<typeof pcb_route_hints>\n","import { z } from \"zod\"\nimport { distance } from \"../../units\"\nimport { layer_ref } from \"./layer_ref\"\n\nexport const route_hint_point = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n to_layer: layer_ref.optional(),\n trace_width: distance.optional(),\n})\n\nexport type RouteHintPoint = z.infer<typeof route_hint_point>\nexport type RouteHintPointInput = z.input<typeof route_hint_point>\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { rotation, length, type Rotation, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_component = z\n .object({\n type: z.literal(\"pcb_component\"),\n pcb_component_id: getZodPrefixedIdWithDefault(\"pcb_component\"),\n source_component_id: z.string(),\n center: point,\n layer: layer_ref,\n rotation: rotation,\n width: length,\n height: length,\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type PcbComponentInput = z.input<typeof pcb_component>\ntype InferredPcbComponent = z.infer<typeof pcb_component>\n\n/**\n * Defines a component on the PCB\n */\nexport interface PcbComponent {\n type: \"pcb_component\"\n pcb_component_id: string\n source_component_id: string\n center: Point\n layer: LayerRef\n rotation: Rotation\n width: Length\n height: Length\n}\n\n/**\n * @deprecated use PcbComponent\n */\nexport type PCBComponent = PcbComponent\n\nexpectTypesMatch<PcbComponent, InferredPcbComponent>(true)\n","import type { TypeEqual } from \"ts-expect\"\n\nexport const expectTypesMatch = <const T1, const T2>(\n shouldBe: TypeEqual<T1, T2>,\n): void => {}\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_hole_circle_or_square = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n hole_shape: z.enum([\"circle\", \"square\"]),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n})\n\nexport const pcb_hole_circle_or_square_shape =\n pcb_hole_circle_or_square.describe(\n \"Defines a circular or square hole on the PCB\",\n )\n\nexport type PcbHoleCircleOrSquareInput = z.input<\n typeof pcb_hole_circle_or_square\n>\ntype InferredPcbHoleCircleOrSquare = z.infer<typeof pcb_hole_circle_or_square>\n\n/**\n * Defines a circular or square hole on the PCB\n */\nexport interface PcbHoleCircleOrSquare {\n type: \"pcb_hole\"\n pcb_hole_id: string\n hole_shape: \"circle\" | \"square\"\n hole_diameter: number\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbHoleCircleOrSquare, InferredPcbHoleCircleOrSquare>(true)\n\nconst pcb_hole_oval = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n hole_shape: z.literal(\"oval\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n})\n\nexport const pcb_hole_oval_shape = pcb_hole_oval.describe(\n \"Defines an oval hole on the PCB\",\n)\n\nexport type PcbHoleOvalInput = z.input<typeof pcb_hole_oval>\ntype InferredPcbHoleOval = z.infer<typeof pcb_hole_oval>\n\n/**\n * Defines an oval hole on the PCB\n */\nexport interface PcbHoleOval {\n type: \"pcb_hole\"\n pcb_hole_id: string\n hole_shape: \"oval\"\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbHoleOval, InferredPcbHoleOval>(true)\n\nexport const pcb_hole = pcb_hole_circle_or_square.or(pcb_hole_oval)\n\n/**\n * @deprecated Use PcbHoleCircleOrSquare or PcbHoleOval\n */\nexport type PCBHoleInput = z.input<typeof pcb_hole>\n/**\n * @deprecated Use PcbHoleCircleOrSquare or PcbHoleOval\n */\nexport type PCBHole = z.infer<typeof pcb_hole>\n\nexport type PcbHole = PcbHoleCircleOrSquare | PcbHoleOval\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_plated_hole_circle = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"circle\"),\n outer_diameter: z.number(),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\n\n/**\n * Defines a circular plated hole on the PCB\n */\nexport interface PcbPlatedHoleCircle {\n type: \"pcb_plated_hole\"\n shape: \"circle\"\n outer_diameter: number\n hole_diameter: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nconst pcb_plated_hole_oval = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.enum([\"oval\", \"pill\"]),\n outer_width: z.number(),\n outer_height: z.number(),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\n\n/**\n * Defines an oval or pill-shaped plated hole on the PCB\n */\nexport interface PcbPlatedHoleOval {\n type: \"pcb_plated_hole\"\n shape: \"oval\" | \"pill\"\n outer_width: number\n outer_height: number\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nexport const pcb_plated_hole = z.union([\n pcb_plated_hole_circle,\n pcb_plated_hole_oval,\n])\nexport type PcbPlatedHole = PcbPlatedHoleCircle | PcbPlatedHoleOval\n\nexpectTypesMatch<PcbPlatedHoleCircle, z.infer<typeof pcb_plated_hole_circle>>(\n true,\n)\nexpectTypesMatch<PcbPlatedHoleOval, z.infer<typeof pcb_plated_hole_oval>>(true)\n\n/**\n * @deprecated use PcbPlatedHole\n */\nexport type PCBPlatedHole = PcbPlatedHole\n\n/**\n * @deprecated use PcbPlatedHoleInput\n */\nexport type PCBPlatedHoleInput = z.input<typeof pcb_plated_hole>\nexport type PcbPlatedHoleInput = z.input<typeof pcb_plated_hole>\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port = z\n .object({\n type: z.literal(\"pcb_port\"),\n pcb_port_id: getZodPrefixedIdWithDefault(\"pcb_port\"),\n source_port_id: z.string(),\n pcb_component_id: z.string(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n })\n .describe(\"Defines a port on the PCB\")\n\nexport type PcbPortInput = z.input<typeof pcb_port>\ntype InferredPcbPort = z.infer<typeof pcb_port>\n\n/**\n * Defines a port on the PCB\n */\nexport interface PcbPort {\n type: \"pcb_port\"\n pcb_port_id: string\n source_port_id: string\n pcb_component_id: string\n x: Distance\n y: Distance\n layers: LayerRef[]\n}\n\n/**\n * @deprecated use PcbPort\n */\nexport type PCBPort = PcbPort\n\n/**\n * @deprecated use PcbPortInput\n */\nexport type PCBPortInput = PcbPortInput\n\nexpectTypesMatch<PcbPort, InferredPcbPort>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_smtpad_circle = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"circle\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n x: distance,\n y: distance,\n radius: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nconst pcb_smtpad_rect = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rect\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nexport const pcb_smtpad = z\n .union([pcb_smtpad_circle, pcb_smtpad_rect])\n .describe(\"Defines an SMT pad on the PCB\")\n\nexport type PCBSMTPadInput = z.input<typeof pcb_smtpad>\ntype PCBSMTPadCircle = z.infer<typeof pcb_smtpad_circle>\ntype PCBSMTPadRect = z.infer<typeof pcb_smtpad_rect>\n\n/**\n * Defines an SMT pad on the PCB\n */\nexport interface PcbSmtPadCircle {\n type: \"pcb_smtpad\"\n shape: \"circle\"\n pcb_smtpad_id: string\n x: Distance\n y: Distance\n radius: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\n/**\n * Defines an SMT pad on the PCB\n */\nexport interface PcbSmtPadRect {\n type: \"pcb_smtpad\"\n shape: \"rect\"\n pcb_smtpad_id: string\n x: Distance\n y: Distance\n width: number\n height: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\nexport type PcbSmtPad = PcbSmtPadCircle | PcbSmtPadRect\n\n/**\n * @deprecated use PcbSmtPad\n */\nexport type PCBSMTPad = PcbSmtPad\n\nexpectTypesMatch<PcbSmtPadCircle, PCBSMTPadCircle>(true)\nexpectTypesMatch<PcbSmtPadRect, PCBSMTPadRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_text = z\n .object({\n type: z.literal(\"pcb_text\"),\n pcb_text_id: getZodPrefixedIdWithDefault(\"pcb_text\"),\n text: z.string(),\n center: point,\n layer: layer_ref,\n width: length,\n height: length,\n lines: z.number(),\n align: z.enum([\"bottom-left\"]),\n })\n .describe(\"Defines text on the PCB\")\n\nexport type PcbTextInput = z.input<typeof pcb_text>\ntype InferredPcbText = z.infer<typeof pcb_text>\n\n/**\n * Defines text on the PCB\n */\nexport interface PcbText {\n type: \"pcb_text\"\n pcb_text_id: string\n text: string\n center: Point\n layer: LayerRef\n width: Length\n height: Length\n lines: number\n align: \"bottom-left\"\n}\n\n/**\n * @deprecated use PcbText\n */\nexport type PCBText = PcbText\n\nexpectTypesMatch<PcbText, InferredPcbText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_route_point_wire = z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref,\n})\n\nexport const pcb_trace_route_point_via = z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n from_layer: z.string(),\n to_layer: z.string(),\n})\n\nexport const pcb_trace_route_point = z.union([\n pcb_trace_route_point_wire,\n pcb_trace_route_point_via,\n])\ntype InferredPcbTraceRoutePoint = z.infer<typeof pcb_trace_route_point>\n\nexport const pcb_trace = z\n .object({\n type: z.literal(\"pcb_trace\"),\n source_trace_id: z.string().optional(),\n pcb_component_id: z.string().optional(),\n pcb_trace_id: getZodPrefixedIdWithDefault(\"pcb_trace\"),\n route_thickness_mode: z\n .enum([\"constant\", \"interpolated\"])\n .default(\"constant\")\n .optional(),\n should_round_corners: z.boolean().optional(),\n route: z.array(\n z.union([\n z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref,\n }),\n z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n from_layer: z.string(),\n to_layer: z.string(),\n }),\n ]),\n ),\n })\n .describe(\"Defines a trace on the PCB\")\n\nexport type PcbTraceInput = z.input<typeof pcb_trace>\ntype InferredPcbTrace = z.infer<typeof pcb_trace>\n\nexport interface PcbTraceRoutePointWire {\n route_type: \"wire\"\n x: Distance\n y: Distance\n width: Distance\n start_pcb_port_id?: string\n end_pcb_port_id?: string\n layer: LayerRef\n}\n\nexport interface PcbTraceRoutePointVia {\n route_type: \"via\"\n x: Distance\n y: Distance\n from_layer: string\n to_layer: string\n}\n\nexport type PcbTraceRoutePoint = PcbTraceRoutePointWire | PcbTraceRoutePointVia\n\n/**\n * Defines a trace on the PCB\n */\nexport interface PcbTrace {\n type: \"pcb_trace\"\n source_trace_id?: string\n pcb_component_id?: string\n pcb_trace_id: string\n route_thickness_mode?: \"constant\" | \"interpolated\"\n should_round_corners?: boolean\n route: Array<PcbTraceRoutePoint>\n}\n\n/**\n * @deprecated use PcbTrace\n */\nexport type PCBTrace = PcbTrace\n\n/**\n * @deprecated use PcbTraceInput\n */\nexport type PCBTraceInput = PcbTraceInput\n\nexpectTypesMatch<PcbTraceRoutePoint, InferredPcbTraceRoutePoint>(true)\nexpectTypesMatch<PcbTrace, InferredPcbTrace>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_error = z\n .object({\n type: z.literal(\"pcb_trace_error\"),\n pcb_trace_error_id: getZodPrefixedIdWithDefault(\"pcb_trace_error\"),\n error_type: z.literal(\"pcb_trace_error\"),\n message: z.string(),\n center: point.optional(),\n pcb_trace_id: z.string(),\n source_trace_id: z.string(),\n pcb_component_ids: z.array(z.string()),\n pcb_port_ids: z.array(z.string()),\n })\n .describe(\"Defines a trace error on the PCB\")\n\nexport type PcbTraceErrorInput = z.input<typeof pcb_trace_error>\ntype InferredPcbTraceError = z.infer<typeof pcb_trace_error>\n\n/**\n * Defines a trace error on the PCB\n */\nexport interface PcbTraceError {\n type: \"pcb_trace_error\"\n pcb_trace_error_id: string\n error_type: \"pcb_trace_error\"\n message: string\n center?: Point\n pcb_trace_id: string\n source_trace_id: string\n pcb_component_ids: string[]\n pcb_port_ids: string[]\n}\n\n/**\n * @deprecated use PcbTraceError\n */\nexport type PCBTraceError = PcbTraceError\n\nexpectTypesMatch<PcbTraceError, InferredPcbTraceError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port_not_matched_error = z\n .object({\n type: z.literal(\"pcb_port_not_matched_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_error\"),\n message: z.string(),\n pcb_component_ids: z.array(z.string()),\n })\n .describe(\"Defines a trace error on the PCB where a port is not matched\")\n\nexport type PcbPortNotMatchedErrorInput = z.input<\n typeof pcb_port_not_matched_error\n>\ntype InferredPcbPortNotMatchedError = z.infer<typeof pcb_port_not_matched_error>\n\n/**\n * Defines a trace error on the PCB where a port is not matched\n */\nexport interface PcbPortNotMatchedError {\n type: \"pcb_port_not_matched_error\"\n pcb_error_id: string\n message: string\n pcb_component_ids: string[]\n}\n\n/**\n * @deprecated use PcbPortNotMatchedError\n */\nexport type PCBPortNotMatchedError = PcbPortNotMatchedError\n\nexpectTypesMatch<PcbPortNotMatchedError, InferredPcbPortNotMatchedError>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_via = z\n .object({\n type: z.literal(\"pcb_via\"),\n pcb_via_id: getZodPrefixedIdWithDefault(\"pcb_via\"),\n x: distance,\n y: distance,\n outer_diameter: distance.default(\"0.6mm\"),\n hole_diameter: distance.default(\"0.25mm\"),\n /** @deprecated */\n from_layer: layer_ref.optional(),\n /** @deprecated */\n to_layer: layer_ref.optional(),\n layers: z.array(layer_ref),\n pcb_trace_id: z.string().optional(),\n })\n .describe(\"Defines a via on the PCB\")\n\nexport type PcbViaInput = z.input<typeof pcb_via>\ntype InferredPcbVia = z.infer<typeof pcb_via>\n\n/**\n * Defines a via on the PCB\n */\nexport interface PcbVia {\n type: \"pcb_via\"\n pcb_via_id: string\n x: Distance\n y: Distance\n outer_diameter: Distance\n hole_diameter: Distance\n /** @deprecated */\n from_layer?: LayerRef\n /** @deprecated */\n to_layer?: LayerRef\n layers: LayerRef[]\n pcb_trace_id?: string\n}\n\n/**\n * @deprecated use PcbVia\n */\nexport type PCBVia = PcbVia\n\nexpectTypesMatch<PcbVia, InferredPcbVia>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_board = z\n .object({\n type: z.literal(\"pcb_board\"),\n pcb_board_id: getZodPrefixedIdWithDefault(\"pcb_board\"),\n width: length,\n height: length,\n center: point,\n outline: z.array(point).optional(),\n })\n .describe(\"Defines the board outline of the PCB\")\n\n/**\n * Defines the board outline of the PCB\n */\nexport interface PcbBoard {\n type: \"pcb_board\"\n pcb_board_id: string\n width: Length\n height: Length\n center: Point\n outline?: Point[]\n}\n\nexport type PcbBoardInput = z.input<typeof pcb_board>\ntype InferredPcbBoard = z.infer<typeof pcb_board>\n\n/**\n * @deprecated use PcbBoard\n */\nexport type PCBBoard = PcbBoard\n\nexpectTypesMatch<PcbBoard, InferredPcbBoard>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_placement_error = z\n .object({\n type: z.literal(\"pcb_placement_error\"),\n pcb_placement_error_id: getZodPrefixedIdWithDefault(\"pcb_placement_error\"),\n message: z.string(),\n })\n .describe(\"Defines a placement error on the PCB\")\n\nexport type PcbPlacementErrorInput = z.input<typeof pcb_placement_error>\ntype InferredPcbPlacementError = z.infer<typeof pcb_placement_error>\n\n/**\n * Defines a placement error on the PCB\n */\nexport interface PcbPlacementError {\n type: \"pcb_placement_error\"\n pcb_placement_error_id: string\n message: string\n}\n\n/**\n * @deprecated use PcbPlacementError\n */\nexport type PCBPlacementError = PcbPlacementError\n\nexpectTypesMatch<PcbPlacementError, InferredPcbPlacementError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { route_hint_point, type RouteHintPoint } from \"src/pcb\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/**\n * A hint that can be used during generation of a PCB trace.\n */\nexport interface PcbTraceHint {\n type: \"pcb_trace_hint\"\n pcb_trace_hint_id: string\n pcb_port_id: string\n pcb_component_id: string\n route: RouteHintPoint[]\n}\n\nexport const pcb_trace_hint = z\n .object({\n type: z.literal(\"pcb_trace_hint\"),\n pcb_trace_hint_id: getZodPrefixedIdWithDefault(\"pcb_trace_hint\"),\n pcb_port_id: z.string(),\n pcb_component_id: z.string(),\n route: z.array(route_hint_point),\n })\n .describe(\"A hint that can be used during generation of a PCB trace\")\n\nexport type PcbTraceHintInput = z.input<typeof pcb_trace_hint>\ntype InferredPcbTraceHint = z.infer<typeof pcb_trace_hint>\n\n/**\n * @deprecated use PcbTraceHint\n */\nexport type PCBTraceHint = PcbTraceHint\n\nexpectTypesMatch<PcbTraceHint, InferredPcbTraceHint>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport {\n layer_ref,\n type LayerRef,\n type VisibleLayer,\n visible_layer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_line = z\n .object({\n type: z.literal(\"pcb_silkscreen_line\"),\n pcb_silkscreen_line_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_line\"),\n pcb_component_id: z.string(),\n stroke_width: distance.default(\"0.1mm\"),\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen line on the PCB\")\n\nexport type PcbSilkscreenLineInput = z.input<typeof pcb_silkscreen_line>\ntype InferredPcbSilkscreenLine = z.infer<typeof pcb_silkscreen_line>\n\n/**\n * Defines a silkscreen line on the PCB\n */\nexport interface PcbSilkscreenLine {\n type: \"pcb_silkscreen_line\"\n pcb_silkscreen_line_id: string\n pcb_component_id: string\n stroke_width: Distance\n x1: Distance\n y1: Distance\n x2: Distance\n y2: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenLine\n */\nexport type PCBSilkscreenLine = PcbSilkscreenLine\n\nexpectTypesMatch<PcbSilkscreenLine, InferredPcbSilkscreenLine>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n visible_layer,\n type VisibleLayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_path = z\n .object({\n type: z.literal(\"pcb_silkscreen_path\"),\n pcb_silkscreen_path_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_path\"),\n pcb_component_id: z.string(),\n layer: visible_layer,\n route: z.array(point),\n stroke_width: length,\n })\n .describe(\"Defines a silkscreen path on the PCB\")\n\nexport type PcbSilkscreenPathInput = z.input<typeof pcb_silkscreen_path>\ntype InferredPcbSilkscreenPath = z.infer<typeof pcb_silkscreen_path>\n\n/**\n * Defines a silkscreen path on the PCB\n */\nexport interface PcbSilkscreenPath {\n type: \"pcb_silkscreen_path\"\n pcb_silkscreen_path_id: string\n pcb_component_id: string\n layer: VisibleLayerRef\n route: Point[]\n stroke_width: Length\n}\n\n/**\n * @deprecated use PcbSilkscreenPath\n */\nexport type PcbSilkscreenPathDeprecated = PcbSilkscreenPath\n\nexpectTypesMatch<PcbSilkscreenPath, InferredPcbSilkscreenPath>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { distance, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_text = z\n .object({\n type: z.literal(\"pcb_silkscreen_text\"),\n pcb_silkscreen_text_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_text\"),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"0.2mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: layer_ref,\n is_mirrored: z.boolean().default(false).optional(),\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n })\n .describe(\"Defines silkscreen text on the PCB\")\n\nexport type PcbSilkscreenTextInput = z.input<typeof pcb_silkscreen_text>\ntype InferredPcbSilkscreenText = z.infer<typeof pcb_silkscreen_text>\n\n/**\n * Defines silkscreen text on the PCB\n */\nexport interface PcbSilkscreenText {\n type: \"pcb_silkscreen_text\"\n pcb_silkscreen_text_id: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n layer: LayerRef\n is_mirrored?: boolean\n anchor_position: Point\n anchor_alignment:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n}\n\n/**\n * @deprecated use PcbSilkscreenText\n */\nexport type PCBSilkscreenText = PcbSilkscreenText\n\nexpectTypesMatch<PcbSilkscreenText, InferredPcbSilkscreenText>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_rect = z\n .object({\n type: z.literal(\"pcb_silkscreen_rect\"),\n pcb_silkscreen_rect_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_rect\"),\n pcb_component_id: z.string(),\n center: point,\n width: length,\n height: length,\n layer: layer_ref,\n })\n .describe(\"Defines a silkscreen rect on the PCB\")\n\nexport type PcbSilkscreenRectInput = z.input<typeof pcb_silkscreen_rect>\ntype InferredPcbSilkscreenRect = z.infer<typeof pcb_silkscreen_rect>\n\n/**\n * Defines a silkscreen rect on the PCB\n */\nexport interface PcbSilkscreenRect {\n type: \"pcb_silkscreen_rect\"\n pcb_silkscreen_rect_id: string\n pcb_component_id: string\n center: Point\n width: Length\n height: Length\n layer: LayerRef\n}\n\n/**\n * @deprecated use PcbSilkscreenRect\n */\nexport type PcbSilkscreenRectOld = PcbSilkscreenRect\n\nexpectTypesMatch<PcbSilkscreenRect, InferredPcbSilkscreenRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_circle = z\n .object({\n type: z.literal(\"pcb_silkscreen_circle\"),\n pcb_silkscreen_circle_id: getZodPrefixedIdWithDefault(\n \"pcb_silkscreen_circle\",\n ),\n pcb_component_id: z.string(),\n center: point,\n radius: length,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen circle on the PCB\")\n\nexport type PcbSilkscreenCircleInput = z.input<typeof pcb_silkscreen_circle>\ntype InferredPcbSilkscreenCircle = z.infer<typeof pcb_silkscreen_circle>\n\n/**\n * Defines a silkscreen circle on the PCB\n */\nexport interface PcbSilkscreenCircle {\n type: \"pcb_silkscreen_circle\"\n pcb_silkscreen_circle_id: string\n pcb_component_id: string\n center: Point\n radius: Length\n layer: VisibleLayer\n}\n\nexpectTypesMatch<PcbSilkscreenCircle, InferredPcbSilkscreenCircle>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n type LayerRef,\n visible_layer,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_oval = z\n .object({\n type: z.literal(\"pcb_silkscreen_oval\"),\n pcb_silkscreen_oval_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_oval\"),\n pcb_component_id: z.string(),\n center: point,\n radius_x: distance,\n radius_y: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen oval on the PCB\")\n\nexport type PcbSilkscreenOvalInput = z.input<typeof pcb_silkscreen_oval>\ntype InferredPcbSilkscreenOval = z.infer<typeof pcb_silkscreen_oval>\n\n/**\n * Defines a silkscreen oval on the PCB\n */\nexport interface PcbSilkscreenOval {\n type: \"pcb_silkscreen_oval\"\n pcb_silkscreen_oval_id: string\n pcb_component_id: string\n center: Point\n radius_x: Distance\n radius_y: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenOval\n */\nexport type PcbSilkscreenOvalDeprecated = PcbSilkscreenOval\n\nexpectTypesMatch<PcbSilkscreenOval, InferredPcbSilkscreenOval>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"src/common\"\nimport { distance, type Length } from \"src/units\"\nimport {\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common/getZodPrefixedIdWithDefault\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_text = z\n .object({\n type: z.literal(\"pcb_fabrication_note_text\"),\n pcb_fabrication_note_text_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_text\",\n ),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"1mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: visible_layer,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\",\n )\n\nexport type PcbFabricationNoteTextInput = z.input<\n typeof pcb_fabrication_note_text\n>\ntype InferredPcbFabricationNoteText = z.infer<typeof pcb_fabrication_note_text>\n\n/**\n * Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\n */\nexport interface PcbFabricationNoteText {\n type: \"pcb_fabrication_note_text\"\n pcb_fabrication_note_text_id: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n layer: VisibleLayer\n anchor_position: Point\n anchor_alignment:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNoteText\n */\nexport type PCBFabricationNoteText = PcbFabricationNoteText\n\nexpectTypesMatch<PcbFabricationNoteText, InferredPcbFabricationNoteText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { point, type Point } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_path = z\n .object({\n type: z.literal(\"pcb_fabrication_note_path\"),\n pcb_fabrication_note_path_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_path\",\n ),\n pcb_component_id: z.string(),\n layer: layer_ref,\n route: z.array(point),\n stroke_width: length,\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication path on the PCB for fabricators or assemblers\",\n )\n\nexport type PcbFabricationNotePathInput = z.input<\n typeof pcb_fabrication_note_path\n>\ntype InferredPcbFabricationNotePath = z.infer<typeof pcb_fabrication_note_path>\n\n/**\n * Defines a fabrication path on the PCB for fabricators or assemblers\n */\nexport interface PcbFabricationNotePath {\n type: \"pcb_fabrication_note_path\"\n pcb_fabrication_note_path_id: string\n pcb_component_id: string\n layer: LayerRef\n route: Point[]\n stroke_width: Length\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNotePath\n */\nexport type PCBFabricationNotePath = PcbFabricationNotePath\n\nexpectTypesMatch<PcbFabricationNotePath, InferredPcbFabricationNotePath>(true)\n","import { z } from \"zod\"\nimport { point } from \"../common\"\nimport { distance } from \"../units\"\n\nexport const pcb_keepout = z\n .object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"rect\"),\n center: point,\n width: distance,\n height: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n })\n .or(\n z.object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"circle\"),\n center: point,\n radius: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n }),\n )\n\nexport type PCBKeepoutInput = z.input<typeof pcb_keepout>\nexport type PCBKeepout = z.infer<typeof pcb_keepout>\n","import { z } from \"zod\"\nimport { point3 } from \"../common\"\nimport { rotation, length } from \"../units\"\nimport { layer_ref } from \"src/pcb\"\n\nexport const cad_component = z\n .object({\n type: z.literal(\"cad_component\"),\n cad_component_id: z.string(),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n position: point3,\n rotation: point3.optional(),\n size: point3.optional(),\n layer: layer_ref.optional(),\n\n // These are all ways to generate/load the 3d model\n footprinter_string: z.string().optional(),\n model_obj_url: z.string().optional(),\n model_stl_url: z.string().optional(),\n model_3mf_url: z.string().optional(),\n model_jscad: z.any().optional(),\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type CadComponentInput = z.input<typeof cad_component>\nexport type CadComponent = z.infer<typeof cad_component>\n","import { z } from \"zod\"\nimport * as pcb from \"./pcb\"\nimport * as sch from \"./schematic\"\nimport * as src from \"./source\"\nimport * as cad from \"./cad\"\n\nexport const any_circuit_element = z.union([\n // TODO source_group\n // TODO source_config\n // TODO pcb_group\n // TODO pcb_config\n // TODO schematic_config\n // TODO schematic_group\n src.source_trace,\n src.source_port,\n src.any_source_component,\n src.source_led,\n src.source_net,\n src.source_group,\n src.source_simple_bug,\n src.source_simple_chip,\n src.source_simple_capacitor,\n src.source_simple_diode,\n src.source_simple_resistor,\n src.source_simple_power_source,\n pcb.pcb_component,\n pcb.pcb_hole,\n pcb.pcb_plated_hole,\n pcb.pcb_keepout,\n pcb.pcb_port,\n pcb.pcb_text,\n pcb.pcb_trace,\n pcb.pcb_via,\n pcb.pcb_smtpad,\n pcb.pcb_board,\n pcb.pcb_trace_hint,\n pcb.pcb_silkscreen_line,\n pcb.pcb_silkscreen_path,\n pcb.pcb_silkscreen_text,\n pcb.pcb_silkscreen_rect,\n pcb.pcb_silkscreen_circle,\n pcb.pcb_silkscreen_oval,\n pcb.pcb_trace_error,\n pcb.pcb_placement_error,\n pcb.pcb_port_not_matched_error,\n pcb.pcb_fabrication_note_path,\n pcb.pcb_fabrication_note_text,\n sch.schematic_box,\n sch.schematic_text,\n sch.schematic_line,\n sch.schematic_component,\n sch.schematic_port,\n sch.schematic_trace,\n sch.schematic_path,\n sch.schematic_error,\n sch.schematic_net_label,\n cad.cad_component,\n])\n\n/**\n * @deprecated use any_circuit_element instead\n */\nexport const any_soup_element = any_circuit_element\n\nexport type AnyCircuitElement = z.infer<typeof any_circuit_element>\nexport type AnyCircuitElementInput = z.input<typeof any_circuit_element>\n/**\n * @deprecated use AnyCircuitElement instead\n */\nexport type AnySoupElement = AnyCircuitElement\n\n/**\n * @deprecated use AnyCircuitElementInput instead\n */\nexport type AnySoupElementInput = AnyCircuitElementInput\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z"]}
1
+ {"version":3,"sources":["../src/utils/convert-si-unit-to-number.ts","../src/units/index.ts","../src/common/point.ts","../src/common/point3.ts","../src/common/size.ts","../src/common/getZodPrefixedIdWithDefault.ts","../src/source/source_simple_capacitor.ts","../src/pcb/properties/supplier_name.ts","../src/source/base/source_component_base.ts","../src/source/source_simple_resistor.ts","../src/source/source_simple_diode.ts","../src/source/source_simple_ground.ts","../src/source/source_simple_bug.ts","../src/source/source_simple_chip.ts","../src/source/source_simple_inductor.ts","../src/source/source_led.ts","../src/source/source_simple_power_source.ts","../src/source/any_source_component.ts","../src/source/source_port.ts","../src/source/source_trace.ts","../src/source/source_group.ts","../src/source/source_net.ts","../src/schematic/schematic_box.ts","../src/schematic/schematic_path.ts","../src/schematic/schematic_component.ts","../src/schematic/schematic_line.ts","../src/schematic/schematic_trace.ts","../src/schematic/schematic_text.ts","../src/schematic/schematic_port.ts","../src/schematic/schematic_net_label.ts","../src/schematic/schematic_error.ts","../src/pcb/properties/layer_ref.ts","../src/pcb/properties/pcb_route_hints.ts","../src/pcb/properties/route_hint_point.ts","../src/pcb/pcb_component.ts","../src/utils/expect-types-match.ts","../src/pcb/pcb_hole.ts","../src/pcb/pcb_plated_hole.ts","../src/pcb/pcb_port.ts","../src/pcb/pcb_smtpad.ts","../src/pcb/pcb_text.ts","../src/pcb/pcb_trace.ts","../src/pcb/pcb_trace_error.ts","../src/pcb/pcb_port_not_matched_error.ts","../src/pcb/pcb_via.ts","../src/pcb/pcb_board.ts","../src/pcb/pcb_placement_error.ts","../src/pcb/pcb_trace_hint.ts","../src/pcb/pcb_silkscreen_line.ts","../src/pcb/pcb_silkscreen_path.ts","../src/pcb/pcb_silkscreen_text.ts","../src/pcb/pcb_silkscreen_rect.ts","../src/pcb/pcb_silkscreen_circle.ts","../src/pcb/pcb_silkscreen_oval.ts","../src/pcb/pcb_fabrication_note_text.ts","../src/pcb/pcb_fabrication_note_path.ts","../src/pcb/pcb_keepout.ts","../src/cad/cad_component.ts","../src/any_circuit_element.ts"],"sourcesContent":["import convertUnits from \"convert-units\"\n\nconst si_prefix_multiplier = {\n tera: 10e12,\n T: 10e12,\n giga: 10e9,\n G: 10e9,\n mega: 10e6,\n M: 10e6,\n kilo: 10e3,\n k: 10e3,\n deci: 10e-1,\n d: 10e-1,\n centi: 10e-2,\n c: 10e-2,\n milli: 10e-3,\n m: 10e-3,\n micro: 10e-6,\n u: 10e-6,\n µ: 10e-6,\n nano: 10e-9,\n n: 10e-9,\n pico: 10e-12,\n p: 10e-12,\n}\nconst si_prefixes = Object.keys(si_prefix_multiplier)\n\nconst target_conversion = {\n mass: \"g\",\n length: \"mm\",\n time: \"ms\",\n volume: \"ml\",\n angle: \"deg\",\n}\n\nfunction getSiPrefixMultiplierFromUnit(v: string): number {\n for (const prefix of si_prefixes) {\n if (v.startsWith(prefix)) {\n return si_prefix_multiplier[prefix as keyof typeof si_prefix_multiplier]\n }\n }\n return 1\n}\n\nexport const parseAndConvertSiUnit = <\n T extends\n | string\n | number\n | undefined\n | { x: string | number; y: string | number },\n>(\n v: T,\n): {\n unit: string | null\n value: T extends { x: string | number; y: string | number }\n ? null | { x: number; y: number }\n : null | number\n} => {\n if (typeof v === \"undefined\") return { unit: null, value: null }\n if (typeof v === \"string\" && v.match(/^[\\d\\.]+$/))\n return { value: parseFloat(v) as any, unit: null }\n if (typeof v === \"number\") return { value: v as any, unit: null }\n if (typeof v === \"object\" && \"x\" in v && \"y\" in v) {\n return {\n unit: parseAndConvertSiUnit(v.x).unit,\n value: {\n x: parseAndConvertSiUnit(v.x as any).value as number,\n y: parseAndConvertSiUnit(v.y as any).value as number,\n } as any,\n }\n }\n const unit_reversed = v\n .split(\"\")\n .reverse()\n .join(\"\")\n .match(/[a-zA-Z]+/)?.[0]\n if (!unit_reversed) {\n throw new Error(`Could not determine unit: \"${v}\"`)\n }\n const unit = unit_reversed.split(\"\").reverse().join(\"\")\n const value = v.slice(0, -unit.length)\n let measure\n try {\n measure = convertUnits().describe(unit as any)?.measure\n } catch (e) {}\n if (measure) {\n const target_unit = (target_conversion as any)[measure]\n if (!target_unit) {\n throw new Error(\n `Could not determine target unit for measure: \"${measure}\"`,\n )\n }\n return {\n unit,\n value: convertUnits(parseFloat(value))\n .from(unit as any)\n .to(target_unit) as any,\n }\n } else {\n return {\n unit,\n value: (getSiPrefixMultiplierFromUnit(unit) * parseFloat(value)) as any,\n }\n }\n}\n","import { parseAndConvertSiUnit } from \"src/utils/convert-si-unit-to-number\"\nimport { z } from \"zod\"\n\n// // Currently, removing uncommon SI Prefixes for type simplicity.\n// export type SIPrefix =\n// // | \"y\"\n// // | \"yocto\"\n// // | \"z\"\n// // | \"zepto\"\n// // | \"atto\"\n// // | \"a\"\n// | \"femto\"\n// | \"f\"\n// | \"u\"\n// | \"micro\"\n// // | \"d\"\n// // | \"deci\"\n// | \"c\"\n// | \"centi\"\n// | \"m\"\n// | \"milli\"\n// | \"k\"\n// | \"kilo\"\n// | \"M\"\n// | \"mega\"\n// // | \"G\"\n// // | \"T\"\n// // | \"P\"\n// // | \"E\"\n// // | \"Z\"\n// // | \"Y\"\n\n// export type UnitAbbreviations = {\n// farad: \"F\"\n// ohm: \"Ω\"\n// henry: \"H\"\n// meter: \"m\"\n// volt: \"V\"\n// inch: \"in\"\n// foot: \"ft\"\n// }\n\n// export type Unit = keyof UnitAbbreviations\n// export type NumberWithUnit<T extends Unit> =\n// | `${number}${T | UnitAbbreviations[T]}`\n// | `${number} ${T | UnitAbbreviations[T]}`\n// | `${number}${SIPrefix}${T | UnitAbbreviations[T]}`\n// | `${number} ${SIPrefix}${T | UnitAbbreviations[T]}`\n// export type NumberWithAnyUnit =\n// | `${number}${UnitOrAbbreviation}`\n// | `${number} ${UnitOrAbbreviation}`\n// | `${number}${SIPrefix}${UnitOrAbbreviation}`\n// | `${number} ${SIPrefix}${UnitOrAbbreviation}`\n\n// TODO lots of validation to make sure the unit is valid etc.\nexport const resistance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const capacitance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const inductance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const voltage = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const length = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n/**\n * Length in meters\n */\nexport type Length = number\nexport type Distance = number\n\nexport const distance = length\n\nexport const current = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const time = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\n/**\n * Rotation is always converted to degrees\n */\nexport const rotation = z\n .string()\n .or(z.number())\n .transform((arg): number => {\n if (typeof arg === \"number\") return arg\n if (arg.endsWith(\"deg\")) {\n return Number.parseFloat(arg.split(\"deg\")[0]!)\n }\n if (arg.endsWith(\"rad\")) {\n return (Number.parseFloat(arg.split(\"rad\")[0]!) * 180) / Math.PI\n }\n return Number.parseFloat(arg)\n })\n\nexport type InputRotation = number | string\nexport type Rotation = number\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport const position = point\n\nexport type Point = z.infer<typeof point>\nexport type InputPoint = z.input<typeof point>\nexport type InputPosition = z.input<typeof position>\nexport type Position = z.infer<typeof position>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n\nexport const position3 = point3\n\nexport type Point3 = z.infer<typeof point3>\n","import { z } from \"zod\"\n\nexport const size = z.object({\n width: z.number(),\n height: z.number(),\n})\n\nexport type Size = z.infer<typeof size>\n","import { z } from \"zod\"\nimport { nanoid } from \"nanoid\"\n\n/**\n * Use this for primary keys for any circuit element\n */\nexport const getZodPrefixedIdWithDefault = (prefix: string) => {\n return z\n .string()\n .optional()\n .default(() => `${prefix}_${nanoid(10)}`)\n}\n","import { z } from \"zod\"\nimport { source_component_base } from \"src/source/base/source_component_base\"\nimport { capacitance } from \"src/units\"\n\nexport const source_simple_capacitor = source_component_base.extend({\n ftype: z.literal(\"simple_capacitor\"),\n capacitance,\n})\n\nexport type SourceSimpleCapacitor = z.infer<typeof source_simple_capacitor>\nexport type SourceSimpleCapacitorInput = z.input<typeof source_simple_capacitor>\n","import { z } from \"zod\"\n\nexport const supplier_name = z.enum([\n \"jlcpcb\",\n \"macrofab\",\n \"pcbway\",\n \"digikey\",\n \"mouser\",\n \"lcsc\",\n])\n\nexport type SupplierName = z.infer<typeof supplier_name>\n","import { supplier_name } from \"src/pcb/properties/supplier_name\"\nimport { z } from \"zod\"\n\nexport const source_component_base = z.object({\n type: z.literal(\"source_component\"),\n ftype: z.string().optional(),\n source_component_id: z.string(),\n name: z.string(),\n manufacturer_part_number: z.string().optional(),\n supplier_part_numbers: z\n .record(supplier_name, z.array(z.string()))\n .optional(),\n})\n\nexport type SourceComponentBase = z.infer<typeof source_component_base>\n","import { z } from \"zod\"\nimport { source_component_base } from \"src/source/base/source_component_base\"\nimport { resistance } from \"src/units\"\n\nexport const source_simple_resistor = source_component_base.extend({\n ftype: z.literal(\"simple_resistor\"),\n resistance,\n})\n\nexport type SourceSimpleResistor = z.infer<typeof source_simple_resistor>\nexport type SourceSimpleResistorInput = z.input<typeof source_simple_resistor>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_diode = source_component_base.extend({\n ftype: z.literal(\"simple_diode\"),\n})\n\nexport type SourceSimpleDiode = z.infer<typeof source_simple_diode>\nexport type SourceSimpleDiodeInput = z.input<typeof source_simple_diode>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_ground = source_component_base.extend({\n ftype: z.literal(\"simple_ground\"),\n})\n\nexport type SourceSimpleGround = z.infer<typeof source_simple_ground>\nexport type SourceSimpleGroundInput = z.input<typeof source_simple_ground>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use source_simple_chip instead. This will be removed in a future version.\n */\nexport const source_simple_bug = source_component_base\n .extend({\n ftype: z.literal(\"simple_bug\"),\n })\n .describe(\"@deprecated\")\n\nexport type source_simple_bug = z.infer<typeof source_simple_bug>\nexport type SourceSimpleBugInput = z.input<typeof source_simple_bug>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\n\nexport const source_simple_chip = source_component_base.extend({\n ftype: z.literal(\"simple_chip\"),\n})\n\nexport type SourceSimpleChip = z.infer<typeof source_simple_chip>\nexport type SourceSimpleChipInput = z.input<typeof source_simple_chip>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { inductance } from \"../units\"\n\nconst source_simple_inductor = source_component_base.extend({\n ftype: z.literal(\"simple_inductor\"),\n inductance,\n})\n\nexport type SourceSimpleInductor = z.infer<typeof source_simple_inductor>\nexport type SourceSimpleInductorInput = z.input<typeof source_simple_inductor>\n","import { z } from \"zod\"\nimport { source_simple_diode } from \"./source_simple_diode\"\n\nexport const source_led = source_simple_diode.extend({\n ftype: z.literal(\"led\"),\n})\n\nexport type SourceLed = z.infer<typeof source_led>\nexport type SourceLedInput = z.input<typeof source_led>\n","import { source_component_base } from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { voltage } from \"../units\"\n\nexport const source_simple_power_source = source_component_base.extend({\n ftype: z.literal(\"simple_power_source\"),\n voltage,\n})\n\nexport type SourceSimplePowerSource = z.infer<typeof source_simple_power_source>\nexport type SourceSimplePowerSourceInput = z.input<\n typeof source_simple_power_source\n>\n","import { z } from \"zod\"\nimport { source_simple_resistor } from \"./source_simple_resistor\"\nimport { source_simple_capacitor } from \"./source_simple_capacitor\"\nimport { source_simple_diode } from \"./source_simple_diode\"\nimport { source_simple_ground } from \"./source_simple_ground\"\nimport { source_simple_bug } from \"./source_simple_bug\"\nimport { source_simple_chip } from \"./source_simple_chip\"\nimport { source_led } from \"./source_led\"\nimport { source_simple_power_source } from \"./source_simple_power_source\"\n\nexport const any_source_component = z.union([\n source_simple_resistor,\n source_simple_capacitor,\n source_simple_diode,\n source_simple_ground,\n source_simple_chip,\n source_simple_bug,\n source_led,\n source_simple_power_source,\n])\n\nexport type AnySourceComponent = z.infer<typeof any_source_component>\n","import { z } from \"zod\"\n\nexport const source_port = z.object({\n type: z.literal(\"source_port\"),\n pin_number: z.number().optional(),\n port_hints: z.array(z.string()).optional(),\n name: z.string(),\n source_port_id: z.string(),\n source_component_id: z.string(),\n})\n\nexport type SourcePort = z.infer<typeof source_port>\n","import { z } from \"zod\"\n\nexport const source_trace = z.object({\n type: z.literal(\"source_trace\"),\n source_trace_id: z.string(),\n connected_source_port_ids: z.array(z.string()),\n connected_source_net_ids: z.array(z.string()),\n})\n\nexport type SourceTrace = z.infer<typeof source_trace>\n","import { z } from \"zod\"\n\nexport const source_group = z.object({\n type: z.literal(\"source_group\"),\n source_group_id: z.string(),\n name: z.string().optional(),\n})\n\nexport type SourceGroup = z.infer<typeof source_group>\nexport type SourceGroupInput = z.input<typeof source_group>\n","import { z } from \"zod\"\n\nexport const source_net = z.object({\n type: z.literal(\"source_net\"),\n source_net_id: z.string(),\n name: z.string(),\n member_source_group_ids: z.array(z.string()),\n is_power: z.boolean().optional(),\n is_ground: z.boolean().optional(),\n is_digital_signal: z.boolean().optional(),\n is_analog_signal: z.boolean().optional(),\n trace_width: z.number().optional(),\n})\n\nexport type SourceNet = z.infer<typeof source_net>\nexport type SourceNetInput = z.input<typeof source_net>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_box = z\n .object({\n type: z.literal(\"schematic_box\"),\n schematic_component_id: z.string(),\n width: distance,\n height: distance,\n x: distance,\n y: distance,\n })\n .describe(\"Draws a box on the schematic\")\n\nexport type SchematicBoxInput = z.input<typeof schematic_box>\nexport type SchematicBox = z.infer<typeof schematic_box>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const schematic_path = z.object({\n type: z.literal(\"schematic_path\"),\n schematic_component_id: z.string(),\n fill_color: z.enum([\"red\", \"blue\"]).optional(),\n is_filled: z.boolean().optional(),\n points: z.array(point),\n})\n\nexport type SchematicPathInput = z.input<typeof schematic_path>\nexport type SchematicPath = z.infer<typeof schematic_path>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\nimport { size } from \"../common/size\"\nimport { length, rotation } from \"../units\"\n\nexport const schematic_pin_styles = z.record(\n z.object({\n left_margin: length.optional(),\n right_margin: length.optional(),\n top_margin: length.optional(),\n bottom_margin: length.optional(),\n }),\n)\n\nexport const schematic_component = z.object({\n type: z.literal(\"schematic_component\"),\n rotation: rotation.default(0),\n size,\n center: point,\n source_component_id: z.string(),\n schematic_component_id: z.string(),\n pin_spacing: length.optional(),\n pin_styles: schematic_pin_styles.optional(),\n box_width: length.optional(),\n symbol_name: z.string().optional(),\n port_arrangement: z\n .union([\n z.object({\n left_size: z.number(),\n right_size: z.number(),\n top_size: z.number().optional(),\n bottom_size: z.number().optional(),\n }),\n z.object({\n left_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n right_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n top_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n bottom_side: z\n .object({\n pins: z.array(z.number()),\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n }),\n ])\n .optional(),\n port_labels: z.record(z.string()).optional(),\n})\n\nexport type SchematicComponentInput = z.input<typeof schematic_component>\nexport type SchematicComponent = z.infer<typeof schematic_component>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_line = z.object({\n type: z.literal(\"schematic_line\"),\n schematic_component_id: z.string(),\n x1: distance,\n x2: distance,\n y1: distance,\n y2: distance,\n})\n\nexport type SchematicLineInput = z.input<typeof schematic_line>\nexport type SchematicLine = z.infer<typeof schematic_line>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_trace = z.object({\n type: z.literal(\"schematic_trace\"),\n schematic_trace_id: z.string(),\n source_trace_id: z.string(),\n edges: z.array(\n z.object({\n from: z.object({\n x: z.number(),\n y: z.number(),\n }),\n to: z.object({\n x: z.number(),\n y: z.number(),\n }),\n from_schematic_port_id: z.string().optional(),\n to_schematic_port_id: z.string().optional(),\n }),\n ),\n})\n\nexport type SchematicTraceInput = z.input<typeof schematic_trace>\nexport type SchematicTrace = z.infer<typeof schematic_trace>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\n\nexport const schematic_text = z.object({\n type: z.literal(\"schematic_text\"),\n schematic_component_id: z.string(),\n schematic_text_id: z.string(),\n text: z.string(),\n position: z.object({\n x: distance,\n y: distance,\n }),\n rotation: z.number().default(0),\n anchor: z\n .enum([\"center\", \"left\", \"right\", \"top\", \"bottom\"])\n .default(\"center\"),\n})\n\nexport type SchematicTextInput = z.input<typeof schematic_text>\nexport type SchematicText = z.infer<typeof schematic_text>\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { point } from \"../common\"\n\nexport const schematic_port = z\n .object({\n type: z.literal(\"schematic_port\"),\n schematic_port_id: z.string(),\n source_port_id: z.string(),\n schematic_component_id: z.string().optional(),\n center: point,\n facing_direction: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n })\n .describe(\"Defines a port on a schematic component\")\n\nexport type SchematicPortInput = z.input<typeof schematic_port>\nexport type SchematicPort = z.infer<typeof schematic_port>\n","import { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const schematic_net_label = z.object({\n type: z.literal(\"schematic_net_label\"),\n source_net_id: z.string(),\n center: point,\n anchor_side: z.enum([\"top\", \"bottom\", \"left\", \"right\"]),\n text: z.string(),\n})\n\nexport type SchematicNetLabelInput = z.input<typeof schematic_net_label>\nexport type SchematicNetLabel = z.infer<typeof schematic_net_label>\n","import { z } from \"zod\"\n\nexport const schematic_error = z\n .object({\n schematic_error_id: z.string(),\n type: z.literal(\"schematic_error\"),\n // eventually each error type should be broken out into a dir of files\n error_type: z.literal(\"schematic_port_not_found\"),\n message: z.string(),\n })\n .describe(\"Defines a schematic error on the schematic\")\n\nexport type SchematicErrorInput = z.input<typeof schematic_error>\nexport type SchematicError = z.infer<typeof schematic_error>\n","import { z } from \"zod\"\n\nexport const all_layers = [\n \"top\",\n \"bottom\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\",\n] as const\n\nexport const layer_string = z.enum(all_layers)\n\nexport const layer_ref = layer_string\n .or(\n z.object({\n name: layer_string,\n }),\n )\n .transform((layer) => {\n if (typeof layer === \"string\") {\n return layer\n }\n return layer.name\n })\n\nexport type LayerRefInput = z.input<typeof layer_ref>\nexport type LayerRef = z.output<typeof layer_ref>\n\nexport const visible_layer = z.enum([\"top\", \"bottom\"])\nexport type VisibleLayerRef = z.infer<typeof visible_layer>\nexport type VisibleLayer = z.infer<typeof visible_layer>\n","import { z } from \"zod\"\nimport { distance } from \"src/units\"\nimport { layer_ref } from \"./layer_ref\"\n\n// x: string | number\n// y: string | number\n// via?: boolean\n// via_to_layer?: string\nexport const pcb_route_hint = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n via_to_layer: layer_ref.optional(),\n})\nexport const pcb_route_hints = z.array(pcb_route_hint)\n\nexport type PcbRouteHintInput = z.input<typeof pcb_route_hint>\nexport type PcbRouteHintsInput = z.input<typeof pcb_route_hints>\nexport type PcbRouteHint = z.output<typeof pcb_route_hint>\nexport type PcbRouteHints = z.output<typeof pcb_route_hints>\n","import { z } from \"zod\"\nimport { distance } from \"../../units\"\nimport { layer_ref } from \"./layer_ref\"\n\nexport const route_hint_point = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n to_layer: layer_ref.optional(),\n trace_width: distance.optional(),\n})\n\nexport type RouteHintPoint = z.infer<typeof route_hint_point>\nexport type RouteHintPointInput = z.input<typeof route_hint_point>\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { rotation, length, type Rotation, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_component = z\n .object({\n type: z.literal(\"pcb_component\"),\n pcb_component_id: getZodPrefixedIdWithDefault(\"pcb_component\"),\n source_component_id: z.string(),\n center: point,\n layer: layer_ref,\n rotation: rotation,\n width: length,\n height: length,\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type PcbComponentInput = z.input<typeof pcb_component>\ntype InferredPcbComponent = z.infer<typeof pcb_component>\n\n/**\n * Defines a component on the PCB\n */\nexport interface PcbComponent {\n type: \"pcb_component\"\n pcb_component_id: string\n source_component_id: string\n center: Point\n layer: LayerRef\n rotation: Rotation\n width: Length\n height: Length\n}\n\n/**\n * @deprecated use PcbComponent\n */\nexport type PCBComponent = PcbComponent\n\nexpectTypesMatch<PcbComponent, InferredPcbComponent>(true)\n","import type { TypeEqual } from \"ts-expect\"\n\nexport const expectTypesMatch = <const T1, const T2>(\n shouldBe: TypeEqual<T1, T2>,\n): void => {}\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_hole_circle_or_square = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n hole_shape: z.enum([\"circle\", \"square\"]),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n})\n\nexport const pcb_hole_circle_or_square_shape =\n pcb_hole_circle_or_square.describe(\n \"Defines a circular or square hole on the PCB\",\n )\n\nexport type PcbHoleCircleOrSquareInput = z.input<\n typeof pcb_hole_circle_or_square\n>\ntype InferredPcbHoleCircleOrSquare = z.infer<typeof pcb_hole_circle_or_square>\n\n/**\n * Defines a circular or square hole on the PCB\n */\nexport interface PcbHoleCircleOrSquare {\n type: \"pcb_hole\"\n pcb_hole_id: string\n hole_shape: \"circle\" | \"square\"\n hole_diameter: number\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbHoleCircleOrSquare, InferredPcbHoleCircleOrSquare>(true)\n\nconst pcb_hole_oval = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n hole_shape: z.literal(\"oval\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n})\n\nexport const pcb_hole_oval_shape = pcb_hole_oval.describe(\n \"Defines an oval hole on the PCB\",\n)\n\nexport type PcbHoleOvalInput = z.input<typeof pcb_hole_oval>\ntype InferredPcbHoleOval = z.infer<typeof pcb_hole_oval>\n\n/**\n * Defines an oval hole on the PCB\n */\nexport interface PcbHoleOval {\n type: \"pcb_hole\"\n pcb_hole_id: string\n hole_shape: \"oval\"\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbHoleOval, InferredPcbHoleOval>(true)\n\nexport const pcb_hole = pcb_hole_circle_or_square.or(pcb_hole_oval)\n\n/**\n * @deprecated Use PcbHoleCircleOrSquare or PcbHoleOval\n */\nexport type PCBHoleInput = z.input<typeof pcb_hole>\n/**\n * @deprecated Use PcbHoleCircleOrSquare or PcbHoleOval\n */\nexport type PCBHole = z.infer<typeof pcb_hole>\n\nexport type PcbHole = PcbHoleCircleOrSquare | PcbHoleOval\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_plated_hole_circle = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"circle\"),\n outer_diameter: z.number(),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\n\n/**\n * Defines a circular plated hole on the PCB\n */\nexport interface PcbPlatedHoleCircle {\n type: \"pcb_plated_hole\"\n shape: \"circle\"\n outer_diameter: number\n hole_diameter: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nconst pcb_plated_hole_oval = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.enum([\"oval\", \"pill\"]),\n outer_width: z.number(),\n outer_height: z.number(),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n})\n\n/**\n * Defines an oval or pill-shaped plated hole on the PCB\n */\nexport interface PcbPlatedHoleOval {\n type: \"pcb_plated_hole\"\n shape: \"oval\" | \"pill\"\n outer_width: number\n outer_height: number\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n}\n\nexport const pcb_plated_hole = z.union([\n pcb_plated_hole_circle,\n pcb_plated_hole_oval,\n])\nexport type PcbPlatedHole = PcbPlatedHoleCircle | PcbPlatedHoleOval\n\nexpectTypesMatch<PcbPlatedHoleCircle, z.infer<typeof pcb_plated_hole_circle>>(\n true,\n)\nexpectTypesMatch<PcbPlatedHoleOval, z.infer<typeof pcb_plated_hole_oval>>(true)\n\n/**\n * @deprecated use PcbPlatedHole\n */\nexport type PCBPlatedHole = PcbPlatedHole\n\n/**\n * @deprecated use PcbPlatedHoleInput\n */\nexport type PCBPlatedHoleInput = z.input<typeof pcb_plated_hole>\nexport type PcbPlatedHoleInput = z.input<typeof pcb_plated_hole>\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port = z\n .object({\n type: z.literal(\"pcb_port\"),\n pcb_port_id: getZodPrefixedIdWithDefault(\"pcb_port\"),\n source_port_id: z.string(),\n pcb_component_id: z.string(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n })\n .describe(\"Defines a port on the PCB\")\n\nexport type PcbPortInput = z.input<typeof pcb_port>\ntype InferredPcbPort = z.infer<typeof pcb_port>\n\n/**\n * Defines a port on the PCB\n */\nexport interface PcbPort {\n type: \"pcb_port\"\n pcb_port_id: string\n source_port_id: string\n pcb_component_id: string\n x: Distance\n y: Distance\n layers: LayerRef[]\n}\n\n/**\n * @deprecated use PcbPort\n */\nexport type PCBPort = PcbPort\n\n/**\n * @deprecated use PcbPortInput\n */\nexport type PCBPortInput = PcbPortInput\n\nexpectTypesMatch<PcbPort, InferredPcbPort>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_smtpad_circle = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"circle\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n x: distance,\n y: distance,\n radius: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nconst pcb_smtpad_rect = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rect\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n})\n\nexport const pcb_smtpad = z\n .union([pcb_smtpad_circle, pcb_smtpad_rect])\n .describe(\"Defines an SMT pad on the PCB\")\n\nexport type PCBSMTPadInput = z.input<typeof pcb_smtpad>\ntype PCBSMTPadCircle = z.infer<typeof pcb_smtpad_circle>\ntype PCBSMTPadRect = z.infer<typeof pcb_smtpad_rect>\n\n/**\n * Defines an SMT pad on the PCB\n */\nexport interface PcbSmtPadCircle {\n type: \"pcb_smtpad\"\n shape: \"circle\"\n pcb_smtpad_id: string\n x: Distance\n y: Distance\n radius: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\n/**\n * Defines an SMT pad on the PCB\n */\nexport interface PcbSmtPadRect {\n type: \"pcb_smtpad\"\n shape: \"rect\"\n pcb_smtpad_id: string\n x: Distance\n y: Distance\n width: number\n height: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n}\n\nexport type PcbSmtPad = PcbSmtPadCircle | PcbSmtPadRect\n\n/**\n * @deprecated use PcbSmtPad\n */\nexport type PCBSMTPad = PcbSmtPad\n\nexpectTypesMatch<PcbSmtPadCircle, PCBSMTPadCircle>(true)\nexpectTypesMatch<PcbSmtPadRect, PCBSMTPadRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_text = z\n .object({\n type: z.literal(\"pcb_text\"),\n pcb_text_id: getZodPrefixedIdWithDefault(\"pcb_text\"),\n text: z.string(),\n center: point,\n layer: layer_ref,\n width: length,\n height: length,\n lines: z.number(),\n align: z.enum([\"bottom-left\"]),\n })\n .describe(\"Defines text on the PCB\")\n\nexport type PcbTextInput = z.input<typeof pcb_text>\ntype InferredPcbText = z.infer<typeof pcb_text>\n\n/**\n * Defines text on the PCB\n */\nexport interface PcbText {\n type: \"pcb_text\"\n pcb_text_id: string\n text: string\n center: Point\n layer: LayerRef\n width: Length\n height: Length\n lines: number\n align: \"bottom-left\"\n}\n\n/**\n * @deprecated use PcbText\n */\nexport type PCBText = PcbText\n\nexpectTypesMatch<PcbText, InferredPcbText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_route_point_wire = z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref,\n})\n\nexport const pcb_trace_route_point_via = z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n from_layer: z.string(),\n to_layer: z.string(),\n})\n\nexport const pcb_trace_route_point = z.union([\n pcb_trace_route_point_wire,\n pcb_trace_route_point_via,\n])\ntype InferredPcbTraceRoutePoint = z.infer<typeof pcb_trace_route_point>\n\nexport const pcb_trace = z\n .object({\n type: z.literal(\"pcb_trace\"),\n source_trace_id: z.string().optional(),\n pcb_component_id: z.string().optional(),\n pcb_trace_id: getZodPrefixedIdWithDefault(\"pcb_trace\"),\n route_thickness_mode: z\n .enum([\"constant\", \"interpolated\"])\n .default(\"constant\")\n .optional(),\n route_order_index: z.number().optional(),\n should_round_corners: z.boolean().optional(),\n route: z.array(\n z.union([\n z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref,\n }),\n z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n from_layer: z.string(),\n to_layer: z.string(),\n }),\n ]),\n ),\n })\n .describe(\"Defines a trace on the PCB\")\n\nexport type PcbTraceInput = z.input<typeof pcb_trace>\ntype InferredPcbTrace = z.infer<typeof pcb_trace>\n\nexport interface PcbTraceRoutePointWire {\n route_type: \"wire\"\n x: Distance\n y: Distance\n width: Distance\n start_pcb_port_id?: string\n end_pcb_port_id?: string\n layer: LayerRef\n}\n\nexport interface PcbTraceRoutePointVia {\n route_type: \"via\"\n x: Distance\n y: Distance\n from_layer: string\n to_layer: string\n}\n\nexport type PcbTraceRoutePoint = PcbTraceRoutePointWire | PcbTraceRoutePointVia\n\n/**\n * Defines a trace on the PCB\n */\nexport interface PcbTrace {\n type: \"pcb_trace\"\n source_trace_id?: string\n pcb_component_id?: string\n pcb_trace_id: string\n /**\n * The order that this trace was routed in. This can be used to debug the\n * autorouter and to understand the trace path better\n *\n * The route_order_index should be relative to a subcircuit\n */\n route_order_index?: number\n route_thickness_mode?: \"constant\" | \"interpolated\"\n should_round_corners?: boolean\n route: Array<PcbTraceRoutePoint>\n}\n\n/**\n * @deprecated use PcbTrace\n */\nexport type PCBTrace = PcbTrace\n\n/**\n * @deprecated use PcbTraceInput\n */\nexport type PCBTraceInput = PcbTraceInput\n\nexpectTypesMatch<PcbTraceRoutePoint, InferredPcbTraceRoutePoint>(true)\nexpectTypesMatch<PcbTrace, InferredPcbTrace>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_error = z\n .object({\n type: z.literal(\"pcb_trace_error\"),\n pcb_trace_error_id: getZodPrefixedIdWithDefault(\"pcb_trace_error\"),\n error_type: z.literal(\"pcb_trace_error\"),\n message: z.string(),\n center: point.optional(),\n pcb_trace_id: z.string(),\n source_trace_id: z.string(),\n pcb_component_ids: z.array(z.string()),\n pcb_port_ids: z.array(z.string()),\n })\n .describe(\"Defines a trace error on the PCB\")\n\nexport type PcbTraceErrorInput = z.input<typeof pcb_trace_error>\ntype InferredPcbTraceError = z.infer<typeof pcb_trace_error>\n\n/**\n * Defines a trace error on the PCB\n */\nexport interface PcbTraceError {\n type: \"pcb_trace_error\"\n pcb_trace_error_id: string\n error_type: \"pcb_trace_error\"\n message: string\n center?: Point\n pcb_trace_id: string\n source_trace_id: string\n pcb_component_ids: string[]\n pcb_port_ids: string[]\n}\n\n/**\n * @deprecated use PcbTraceError\n */\nexport type PCBTraceError = PcbTraceError\n\nexpectTypesMatch<PcbTraceError, InferredPcbTraceError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port_not_matched_error = z\n .object({\n type: z.literal(\"pcb_port_not_matched_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_error\"),\n message: z.string(),\n pcb_component_ids: z.array(z.string()),\n })\n .describe(\"Defines a trace error on the PCB where a port is not matched\")\n\nexport type PcbPortNotMatchedErrorInput = z.input<\n typeof pcb_port_not_matched_error\n>\ntype InferredPcbPortNotMatchedError = z.infer<typeof pcb_port_not_matched_error>\n\n/**\n * Defines a trace error on the PCB where a port is not matched\n */\nexport interface PcbPortNotMatchedError {\n type: \"pcb_port_not_matched_error\"\n pcb_error_id: string\n message: string\n pcb_component_ids: string[]\n}\n\n/**\n * @deprecated use PcbPortNotMatchedError\n */\nexport type PCBPortNotMatchedError = PcbPortNotMatchedError\n\nexpectTypesMatch<PcbPortNotMatchedError, InferredPcbPortNotMatchedError>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_via = z\n .object({\n type: z.literal(\"pcb_via\"),\n pcb_via_id: getZodPrefixedIdWithDefault(\"pcb_via\"),\n x: distance,\n y: distance,\n outer_diameter: distance.default(\"0.6mm\"),\n hole_diameter: distance.default(\"0.25mm\"),\n /** @deprecated */\n from_layer: layer_ref.optional(),\n /** @deprecated */\n to_layer: layer_ref.optional(),\n layers: z.array(layer_ref),\n pcb_trace_id: z.string().optional(),\n })\n .describe(\"Defines a via on the PCB\")\n\nexport type PcbViaInput = z.input<typeof pcb_via>\ntype InferredPcbVia = z.infer<typeof pcb_via>\n\n/**\n * Defines a via on the PCB\n */\nexport interface PcbVia {\n type: \"pcb_via\"\n pcb_via_id: string\n x: Distance\n y: Distance\n outer_diameter: Distance\n hole_diameter: Distance\n /** @deprecated */\n from_layer?: LayerRef\n /** @deprecated */\n to_layer?: LayerRef\n layers: LayerRef[]\n pcb_trace_id?: string\n}\n\n/**\n * @deprecated use PcbVia\n */\nexport type PCBVia = PcbVia\n\nexpectTypesMatch<PcbVia, InferredPcbVia>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_board = z\n .object({\n type: z.literal(\"pcb_board\"),\n pcb_board_id: getZodPrefixedIdWithDefault(\"pcb_board\"),\n width: length,\n height: length,\n center: point,\n thickness: length.optional().default(1.4),\n num_layers: z.number().optional().default(4),\n outline: z.array(point).optional(),\n })\n .describe(\"Defines the board outline of the PCB\")\n\n/**\n * Defines the board outline of the PCB\n */\nexport interface PcbBoard {\n type: \"pcb_board\"\n pcb_board_id: string\n width: Length\n height: Length\n thickness: Length\n num_layers: number\n center: Point\n outline?: Point[]\n}\n\nexport type PcbBoardInput = z.input<typeof pcb_board>\ntype InferredPcbBoard = z.infer<typeof pcb_board>\n\n/**\n * @deprecated use PcbBoard\n */\nexport type PCBBoard = PcbBoard\n\nexpectTypesMatch<PcbBoard, InferredPcbBoard>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_placement_error = z\n .object({\n type: z.literal(\"pcb_placement_error\"),\n pcb_placement_error_id: getZodPrefixedIdWithDefault(\"pcb_placement_error\"),\n message: z.string(),\n })\n .describe(\"Defines a placement error on the PCB\")\n\nexport type PcbPlacementErrorInput = z.input<typeof pcb_placement_error>\ntype InferredPcbPlacementError = z.infer<typeof pcb_placement_error>\n\n/**\n * Defines a placement error on the PCB\n */\nexport interface PcbPlacementError {\n type: \"pcb_placement_error\"\n pcb_placement_error_id: string\n message: string\n}\n\n/**\n * @deprecated use PcbPlacementError\n */\nexport type PCBPlacementError = PcbPlacementError\n\nexpectTypesMatch<PcbPlacementError, InferredPcbPlacementError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { route_hint_point, type RouteHintPoint } from \"src/pcb\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/**\n * A hint that can be used during generation of a PCB trace.\n */\nexport interface PcbTraceHint {\n type: \"pcb_trace_hint\"\n pcb_trace_hint_id: string\n pcb_port_id: string\n pcb_component_id: string\n route: RouteHintPoint[]\n}\n\nexport const pcb_trace_hint = z\n .object({\n type: z.literal(\"pcb_trace_hint\"),\n pcb_trace_hint_id: getZodPrefixedIdWithDefault(\"pcb_trace_hint\"),\n pcb_port_id: z.string(),\n pcb_component_id: z.string(),\n route: z.array(route_hint_point),\n })\n .describe(\"A hint that can be used during generation of a PCB trace\")\n\nexport type PcbTraceHintInput = z.input<typeof pcb_trace_hint>\ntype InferredPcbTraceHint = z.infer<typeof pcb_trace_hint>\n\n/**\n * @deprecated use PcbTraceHint\n */\nexport type PCBTraceHint = PcbTraceHint\n\nexpectTypesMatch<PcbTraceHint, InferredPcbTraceHint>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport {\n layer_ref,\n type LayerRef,\n type VisibleLayer,\n visible_layer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_line = z\n .object({\n type: z.literal(\"pcb_silkscreen_line\"),\n pcb_silkscreen_line_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_line\"),\n pcb_component_id: z.string(),\n stroke_width: distance.default(\"0.1mm\"),\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen line on the PCB\")\n\nexport type PcbSilkscreenLineInput = z.input<typeof pcb_silkscreen_line>\ntype InferredPcbSilkscreenLine = z.infer<typeof pcb_silkscreen_line>\n\n/**\n * Defines a silkscreen line on the PCB\n */\nexport interface PcbSilkscreenLine {\n type: \"pcb_silkscreen_line\"\n pcb_silkscreen_line_id: string\n pcb_component_id: string\n stroke_width: Distance\n x1: Distance\n y1: Distance\n x2: Distance\n y2: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenLine\n */\nexport type PCBSilkscreenLine = PcbSilkscreenLine\n\nexpectTypesMatch<PcbSilkscreenLine, InferredPcbSilkscreenLine>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n visible_layer,\n type VisibleLayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_path = z\n .object({\n type: z.literal(\"pcb_silkscreen_path\"),\n pcb_silkscreen_path_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_path\"),\n pcb_component_id: z.string(),\n layer: visible_layer,\n route: z.array(point),\n stroke_width: length,\n })\n .describe(\"Defines a silkscreen path on the PCB\")\n\nexport type PcbSilkscreenPathInput = z.input<typeof pcb_silkscreen_path>\ntype InferredPcbSilkscreenPath = z.infer<typeof pcb_silkscreen_path>\n\n/**\n * Defines a silkscreen path on the PCB\n */\nexport interface PcbSilkscreenPath {\n type: \"pcb_silkscreen_path\"\n pcb_silkscreen_path_id: string\n pcb_component_id: string\n layer: VisibleLayerRef\n route: Point[]\n stroke_width: Length\n}\n\n/**\n * @deprecated use PcbSilkscreenPath\n */\nexport type PcbSilkscreenPathDeprecated = PcbSilkscreenPath\n\nexpectTypesMatch<PcbSilkscreenPath, InferredPcbSilkscreenPath>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { distance, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_text = z\n .object({\n type: z.literal(\"pcb_silkscreen_text\"),\n pcb_silkscreen_text_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_text\"),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"0.2mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: layer_ref,\n is_mirrored: z.boolean().default(false).optional(),\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n })\n .describe(\"Defines silkscreen text on the PCB\")\n\nexport type PcbSilkscreenTextInput = z.input<typeof pcb_silkscreen_text>\ntype InferredPcbSilkscreenText = z.infer<typeof pcb_silkscreen_text>\n\n/**\n * Defines silkscreen text on the PCB\n */\nexport interface PcbSilkscreenText {\n type: \"pcb_silkscreen_text\"\n pcb_silkscreen_text_id: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n layer: LayerRef\n is_mirrored?: boolean\n anchor_position: Point\n anchor_alignment:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n}\n\n/**\n * @deprecated use PcbSilkscreenText\n */\nexport type PCBSilkscreenText = PcbSilkscreenText\n\nexpectTypesMatch<PcbSilkscreenText, InferredPcbSilkscreenText>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_rect = z\n .object({\n type: z.literal(\"pcb_silkscreen_rect\"),\n pcb_silkscreen_rect_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_rect\"),\n pcb_component_id: z.string(),\n center: point,\n width: length,\n height: length,\n layer: layer_ref,\n })\n .describe(\"Defines a silkscreen rect on the PCB\")\n\nexport type PcbSilkscreenRectInput = z.input<typeof pcb_silkscreen_rect>\ntype InferredPcbSilkscreenRect = z.infer<typeof pcb_silkscreen_rect>\n\n/**\n * Defines a silkscreen rect on the PCB\n */\nexport interface PcbSilkscreenRect {\n type: \"pcb_silkscreen_rect\"\n pcb_silkscreen_rect_id: string\n pcb_component_id: string\n center: Point\n width: Length\n height: Length\n layer: LayerRef\n}\n\n/**\n * @deprecated use PcbSilkscreenRect\n */\nexport type PcbSilkscreenRectOld = PcbSilkscreenRect\n\nexpectTypesMatch<PcbSilkscreenRect, InferredPcbSilkscreenRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_circle = z\n .object({\n type: z.literal(\"pcb_silkscreen_circle\"),\n pcb_silkscreen_circle_id: getZodPrefixedIdWithDefault(\n \"pcb_silkscreen_circle\",\n ),\n pcb_component_id: z.string(),\n center: point,\n radius: length,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen circle on the PCB\")\n\nexport type PcbSilkscreenCircleInput = z.input<typeof pcb_silkscreen_circle>\ntype InferredPcbSilkscreenCircle = z.infer<typeof pcb_silkscreen_circle>\n\n/**\n * Defines a silkscreen circle on the PCB\n */\nexport interface PcbSilkscreenCircle {\n type: \"pcb_silkscreen_circle\"\n pcb_silkscreen_circle_id: string\n pcb_component_id: string\n center: Point\n radius: Length\n layer: VisibleLayer\n}\n\nexpectTypesMatch<PcbSilkscreenCircle, InferredPcbSilkscreenCircle>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n type LayerRef,\n visible_layer,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_oval = z\n .object({\n type: z.literal(\"pcb_silkscreen_oval\"),\n pcb_silkscreen_oval_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_oval\"),\n pcb_component_id: z.string(),\n center: point,\n radius_x: distance,\n radius_y: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen oval on the PCB\")\n\nexport type PcbSilkscreenOvalInput = z.input<typeof pcb_silkscreen_oval>\ntype InferredPcbSilkscreenOval = z.infer<typeof pcb_silkscreen_oval>\n\n/**\n * Defines a silkscreen oval on the PCB\n */\nexport interface PcbSilkscreenOval {\n type: \"pcb_silkscreen_oval\"\n pcb_silkscreen_oval_id: string\n pcb_component_id: string\n center: Point\n radius_x: Distance\n radius_y: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenOval\n */\nexport type PcbSilkscreenOvalDeprecated = PcbSilkscreenOval\n\nexpectTypesMatch<PcbSilkscreenOval, InferredPcbSilkscreenOval>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"src/common\"\nimport { distance, type Length } from \"src/units\"\nimport {\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common/getZodPrefixedIdWithDefault\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_text = z\n .object({\n type: z.literal(\"pcb_fabrication_note_text\"),\n pcb_fabrication_note_text_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_text\",\n ),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"1mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: visible_layer,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\",\n )\n\nexport type PcbFabricationNoteTextInput = z.input<\n typeof pcb_fabrication_note_text\n>\ntype InferredPcbFabricationNoteText = z.infer<typeof pcb_fabrication_note_text>\n\n/**\n * Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\n */\nexport interface PcbFabricationNoteText {\n type: \"pcb_fabrication_note_text\"\n pcb_fabrication_note_text_id: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n layer: VisibleLayer\n anchor_position: Point\n anchor_alignment:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNoteText\n */\nexport type PCBFabricationNoteText = PcbFabricationNoteText\n\nexpectTypesMatch<PcbFabricationNoteText, InferredPcbFabricationNoteText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { point, type Point } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_path = z\n .object({\n type: z.literal(\"pcb_fabrication_note_path\"),\n pcb_fabrication_note_path_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_path\",\n ),\n pcb_component_id: z.string(),\n layer: layer_ref,\n route: z.array(point),\n stroke_width: length,\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication path on the PCB for fabricators or assemblers\",\n )\n\nexport type PcbFabricationNotePathInput = z.input<\n typeof pcb_fabrication_note_path\n>\ntype InferredPcbFabricationNotePath = z.infer<typeof pcb_fabrication_note_path>\n\n/**\n * Defines a fabrication path on the PCB for fabricators or assemblers\n */\nexport interface PcbFabricationNotePath {\n type: \"pcb_fabrication_note_path\"\n pcb_fabrication_note_path_id: string\n pcb_component_id: string\n layer: LayerRef\n route: Point[]\n stroke_width: Length\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNotePath\n */\nexport type PCBFabricationNotePath = PcbFabricationNotePath\n\nexpectTypesMatch<PcbFabricationNotePath, InferredPcbFabricationNotePath>(true)\n","import { z } from \"zod\"\nimport { point } from \"../common\"\nimport { distance } from \"../units\"\n\nexport const pcb_keepout = z\n .object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"rect\"),\n center: point,\n width: distance,\n height: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n })\n .or(\n z.object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"circle\"),\n center: point,\n radius: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n }),\n )\n\nexport type PCBKeepoutInput = z.input<typeof pcb_keepout>\nexport type PCBKeepout = z.infer<typeof pcb_keepout>\n","import { z } from \"zod\"\nimport { point3 } from \"../common\"\nimport { rotation, length } from \"../units\"\nimport { layer_ref } from \"src/pcb\"\n\nexport const cad_component = z\n .object({\n type: z.literal(\"cad_component\"),\n cad_component_id: z.string(),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n position: point3,\n rotation: point3.optional(),\n size: point3.optional(),\n layer: layer_ref.optional(),\n\n // These are all ways to generate/load the 3d model\n footprinter_string: z.string().optional(),\n model_obj_url: z.string().optional(),\n model_stl_url: z.string().optional(),\n model_3mf_url: z.string().optional(),\n model_jscad: z.any().optional(),\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type CadComponentInput = z.input<typeof cad_component>\nexport type CadComponent = z.infer<typeof cad_component>\n","import { z } from \"zod\"\nimport * as pcb from \"./pcb\"\nimport * as sch from \"./schematic\"\nimport * as src from \"./source\"\nimport * as cad from \"./cad\"\n\nexport const any_circuit_element = z.union([\n // TODO source_group\n // TODO source_config\n // TODO pcb_group\n // TODO pcb_config\n // TODO schematic_config\n // TODO schematic_group\n src.source_trace,\n src.source_port,\n src.any_source_component,\n src.source_led,\n src.source_net,\n src.source_group,\n src.source_simple_bug,\n src.source_simple_chip,\n src.source_simple_capacitor,\n src.source_simple_diode,\n src.source_simple_resistor,\n src.source_simple_power_source,\n pcb.pcb_component,\n pcb.pcb_hole,\n pcb.pcb_plated_hole,\n pcb.pcb_keepout,\n pcb.pcb_port,\n pcb.pcb_text,\n pcb.pcb_trace,\n pcb.pcb_via,\n pcb.pcb_smtpad,\n pcb.pcb_board,\n pcb.pcb_trace_hint,\n pcb.pcb_silkscreen_line,\n pcb.pcb_silkscreen_path,\n pcb.pcb_silkscreen_text,\n pcb.pcb_silkscreen_rect,\n pcb.pcb_silkscreen_circle,\n pcb.pcb_silkscreen_oval,\n pcb.pcb_trace_error,\n pcb.pcb_placement_error,\n pcb.pcb_port_not_matched_error,\n pcb.pcb_fabrication_note_path,\n pcb.pcb_fabrication_note_text,\n sch.schematic_box,\n sch.schematic_text,\n sch.schematic_line,\n sch.schematic_component,\n sch.schematic_port,\n sch.schematic_trace,\n sch.schematic_path,\n sch.schematic_error,\n sch.schematic_net_label,\n cad.cad_component,\n])\n\n/**\n * @deprecated use any_circuit_element instead\n */\nexport const any_soup_element = any_circuit_element\n\nexport type AnyCircuitElement = z.infer<typeof any_circuit_element>\nexport type AnyCircuitElementInput = z.input<typeof any_circuit_element>\n/**\n * @deprecated use AnyCircuitElement instead\n */\nexport type AnySoupElement = AnyCircuitElement\n\n/**\n * @deprecated use AnyCircuitElementInput instead\n */\nexport type AnySoupElementInput = AnyCircuitElementInput\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circuit-json",
3
- "version": "0.0.79",
3
+ "version": "0.0.81",
4
4
  "description": "Definitions for the tscircuit intermediary JSON format",
5
5
  "main": "dist/index.mjs",
6
6
  "files": [