easyeda-mcp-pro 0.3.2 → 0.5.2

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.
Files changed (173) hide show
  1. package/README.md +369 -52
  2. package/dist/bom-quality/adapter.d.ts +90 -0
  3. package/dist/bom-quality/adapter.js +295 -0
  4. package/dist/bom-quality/adapter.js.map +1 -0
  5. package/dist/bom-quality/index.d.ts +10 -0
  6. package/dist/bom-quality/index.js +9 -0
  7. package/dist/bom-quality/index.js.map +1 -0
  8. package/dist/bom-quality/quality.d.ts +28 -0
  9. package/dist/bom-quality/quality.js +179 -0
  10. package/dist/bom-quality/quality.js.map +1 -0
  11. package/dist/bom-quality/types.d.ts +94 -0
  12. package/dist/bom-quality/types.js +12 -0
  13. package/dist/bom-quality/types.js.map +1 -0
  14. package/dist/bridge/manager.d.ts +41 -0
  15. package/dist/bridge/manager.js +334 -47
  16. package/dist/bridge/manager.js.map +1 -1
  17. package/dist/bridge/protocol.d.ts +48 -1
  18. package/dist/bridge/protocol.js +43 -1
  19. package/dist/bridge/protocol.js.map +1 -1
  20. package/dist/bridge/types.d.ts +6 -0
  21. package/dist/bridge/types.js +6 -0
  22. package/dist/bridge/types.js.map +1 -1
  23. package/dist/catalog/errors.d.ts +49 -0
  24. package/dist/catalog/errors.js +60 -0
  25. package/dist/catalog/errors.js.map +1 -0
  26. package/dist/catalog/index.d.ts +15 -0
  27. package/dist/catalog/index.js +17 -0
  28. package/dist/catalog/index.js.map +1 -0
  29. package/dist/catalog/schema.d.ts +268 -0
  30. package/dist/catalog/schema.js +245 -0
  31. package/dist/catalog/schema.js.map +1 -0
  32. package/dist/catalog/starter.d.ts +159 -0
  33. package/dist/catalog/starter.js +579 -0
  34. package/dist/catalog/starter.js.map +1 -0
  35. package/dist/catalog/validation.d.ts +48 -0
  36. package/dist/catalog/validation.js +263 -0
  37. package/dist/catalog/validation.js.map +1 -0
  38. package/dist/circuit/circuit-ir.d.ts +460 -0
  39. package/dist/circuit/circuit-ir.js +292 -0
  40. package/dist/circuit/circuit-ir.js.map +1 -0
  41. package/dist/circuit/compiler.d.ts +55 -0
  42. package/dist/circuit/compiler.js +197 -0
  43. package/dist/circuit/compiler.js.map +1 -0
  44. package/dist/circuit/design-intent.d.ts +94 -0
  45. package/dist/circuit/design-intent.js +118 -0
  46. package/dist/circuit/design-intent.js.map +1 -0
  47. package/dist/circuit/errors.d.ts +50 -0
  48. package/dist/circuit/errors.js +61 -0
  49. package/dist/circuit/errors.js.map +1 -0
  50. package/dist/circuit/index.d.ts +17 -0
  51. package/dist/circuit/index.js +18 -0
  52. package/dist/circuit/index.js.map +1 -0
  53. package/dist/circuit/types.d.ts +186 -0
  54. package/dist/circuit/types.js +123 -0
  55. package/dist/circuit/types.js.map +1 -0
  56. package/dist/cli/auto-setup.d.ts +5 -0
  57. package/dist/cli/auto-setup.js +355 -0
  58. package/dist/cli/auto-setup.js.map +1 -0
  59. package/dist/cli/client-definitions.d.ts +34 -0
  60. package/dist/cli/client-definitions.js +194 -0
  61. package/dist/cli/client-definitions.js.map +1 -0
  62. package/dist/cli/local-setup.d.ts +5 -1
  63. package/dist/cli/local-setup.js +40 -6
  64. package/dist/cli/local-setup.js.map +1 -1
  65. package/dist/config/env.d.ts +6 -1
  66. package/dist/config/env.js +93 -5
  67. package/dist/config/env.js.map +1 -1
  68. package/dist/config/profiles.js +4 -4
  69. package/dist/config/version.d.ts +1 -1
  70. package/dist/config/version.js +1 -1
  71. package/dist/export-manifest/errors.d.ts +55 -0
  72. package/dist/export-manifest/errors.js +69 -0
  73. package/dist/export-manifest/errors.js.map +1 -0
  74. package/dist/export-manifest/index.d.ts +10 -0
  75. package/dist/export-manifest/index.js +9 -0
  76. package/dist/export-manifest/index.js.map +1 -0
  77. package/dist/export-manifest/types.d.ts +170 -0
  78. package/dist/export-manifest/types.js +36 -0
  79. package/dist/export-manifest/types.js.map +1 -0
  80. package/dist/export-manifest/validation.d.ts +39 -0
  81. package/dist/export-manifest/validation.js +298 -0
  82. package/dist/export-manifest/validation.js.map +1 -0
  83. package/dist/index.js +20 -0
  84. package/dist/index.js.map +1 -1
  85. package/dist/net-validation/errors.d.ts +89 -0
  86. package/dist/net-validation/errors.js +69 -0
  87. package/dist/net-validation/errors.js.map +1 -0
  88. package/dist/net-validation/fixtures.d.ts +38 -0
  89. package/dist/net-validation/fixtures.js +215 -0
  90. package/dist/net-validation/fixtures.js.map +1 -0
  91. package/dist/net-validation/index.d.ts +10 -0
  92. package/dist/net-validation/index.js +9 -0
  93. package/dist/net-validation/index.js.map +1 -0
  94. package/dist/net-validation/schema.d.ts +118 -0
  95. package/dist/net-validation/schema.js +140 -0
  96. package/dist/net-validation/schema.js.map +1 -0
  97. package/dist/net-validation/validation.d.ts +45 -0
  98. package/dist/net-validation/validation.js +369 -0
  99. package/dist/net-validation/validation.js.map +1 -0
  100. package/dist/pcb-constraints/errors.d.ts +39 -0
  101. package/dist/pcb-constraints/errors.js +133 -0
  102. package/dist/pcb-constraints/errors.js.map +1 -0
  103. package/dist/pcb-constraints/index.d.ts +9 -0
  104. package/dist/pcb-constraints/index.js +9 -0
  105. package/dist/pcb-constraints/index.js.map +1 -0
  106. package/dist/pcb-constraints/types.d.ts +102 -0
  107. package/dist/pcb-constraints/types.js +7 -0
  108. package/dist/pcb-constraints/types.js.map +1 -0
  109. package/dist/pcb-constraints/validation.d.ts +70 -0
  110. package/dist/pcb-constraints/validation.js +309 -0
  111. package/dist/pcb-constraints/validation.js.map +1 -0
  112. package/dist/server/factory.js +2 -0
  113. package/dist/server/factory.js.map +1 -1
  114. package/dist/server/transports/http.d.ts +20 -1
  115. package/dist/server/transports/http.js +156 -34
  116. package/dist/server/transports/http.js.map +1 -1
  117. package/dist/storage/database.d.ts +25 -0
  118. package/dist/storage/database.js +126 -51
  119. package/dist/storage/database.js.map +1 -1
  120. package/dist/tools/{L0_diagnostics.d.ts → L0_diagnostics_api.d.ts} +2 -2
  121. package/dist/tools/L0_diagnostics_api.js +152 -0
  122. package/dist/tools/L0_diagnostics_api.js.map +1 -0
  123. package/dist/tools/L0_diagnostics_core.d.ts +6 -0
  124. package/dist/tools/{L0_diagnostics.js → L0_diagnostics_core.js} +50 -124
  125. package/dist/tools/L0_diagnostics_core.js.map +1 -0
  126. package/dist/tools/L1_board.js +20 -4
  127. package/dist/tools/L1_board.js.map +1 -1
  128. package/dist/tools/{L1_bom.d.ts → L1_bom_core.d.ts} +2 -2
  129. package/dist/tools/{L1_bom.js → L1_bom_core.js} +21 -101
  130. package/dist/tools/L1_bom_core.js.map +1 -0
  131. package/dist/tools/{L1_schematic.d.ts → L1_bom_sourcing.d.ts} +2 -2
  132. package/dist/tools/L1_bom_sourcing.js +265 -0
  133. package/dist/tools/L1_bom_sourcing.js.map +1 -0
  134. package/dist/tools/L1_drc_erc.js +15 -3
  135. package/dist/tools/L1_drc_erc.js.map +1 -1
  136. package/dist/tools/L1_export.js +20 -4
  137. package/dist/tools/L1_export.js.map +1 -1
  138. package/dist/tools/L1_pcb_constraints.d.ts +6 -0
  139. package/dist/tools/L1_pcb_constraints.js +234 -0
  140. package/dist/tools/L1_pcb_constraints.js.map +1 -0
  141. package/dist/tools/L1_pcb_write.js +26 -12
  142. package/dist/tools/L1_pcb_write.js.map +1 -1
  143. package/dist/tools/L1_schematic_read.d.ts +6 -0
  144. package/dist/tools/{L1_schematic.js → L1_schematic_read.js} +125 -190
  145. package/dist/tools/L1_schematic_read.js.map +1 -0
  146. package/dist/tools/L1_schematic_write.d.ts +6 -0
  147. package/dist/tools/L1_schematic_write.js +516 -0
  148. package/dist/tools/L1_schematic_write.js.map +1 -0
  149. package/dist/tools/register.js +15 -7
  150. package/dist/tools/register.js.map +1 -1
  151. package/dist/tools/registry.d.ts +41 -7
  152. package/dist/tools/registry.js +111 -12
  153. package/dist/tools/registry.js.map +1 -1
  154. package/dist/tools/types.d.ts +16 -0
  155. package/dist/utils/logger.d.ts +1 -1
  156. package/dist/utils/logger.js +1 -1
  157. package/dist/utils/logger.js.map +1 -1
  158. package/dist/vendors/base-http-client.d.ts +48 -0
  159. package/dist/vendors/base-http-client.js +75 -0
  160. package/dist/vendors/base-http-client.js.map +1 -0
  161. package/dist/vendors/digikey/client.js +10 -19
  162. package/dist/vendors/digikey/client.js.map +1 -1
  163. package/dist/vendors/jlcpcb/client.js +41 -70
  164. package/dist/vendors/jlcpcb/client.js.map +1 -1
  165. package/dist/vendors/lcsc/client.js +5 -18
  166. package/dist/vendors/lcsc/client.js.map +1 -1
  167. package/dist/vendors/mouser/client.js +4 -12
  168. package/dist/vendors/mouser/client.js.map +1 -1
  169. package/easyeda-bridge-extension.eext +0 -0
  170. package/package.json +41 -26
  171. package/dist/tools/L0_diagnostics.js.map +0 -1
  172. package/dist/tools/L1_bom.js.map +0 -1
  173. package/dist/tools/L1_schematic.js.map +0 -1
@@ -0,0 +1,460 @@
1
+ /**
2
+ * CircuitIR — versioned, validated, machine-readable circuit model.
3
+ *
4
+ * CircuitIR is the **source of truth** for downstream EasyEDA operations.
5
+ * It is produced by compiling a DesignIntent, but can also be authored or
6
+ * edited directly for advanced use cases.
7
+ *
8
+ * Every significant node (Block, Device, Net, Rail) carries a `designIntentRef`
9
+ * array for traceability back to the originating DesignIntent requirements.
10
+ *
11
+ * @schema circuit-ir/v1
12
+ */
13
+ import { z } from 'zod';
14
+ import { ValidationStatus, NetType, ConstraintSeverity, ConstraintType, BoardLayerType, KeepoutRestriction, PlacementSide, PlacementZoneType, MountingHoleType } from './types.js';
15
+ export declare const CIRCUIT_IR_SCHEMA_VERSION = "circuit-ir/v1";
16
+ export declare const BlockSchema: z.ZodObject<{
17
+ id: z.ZodString;
18
+ name: z.ZodString;
19
+ type: z.ZodString;
20
+ description: z.ZodOptional<z.ZodString>;
21
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
22
+ requirementId: z.ZodString;
23
+ note: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strip>>>;
25
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
26
+ }, z.core.$strip>;
27
+ export type Block = z.infer<typeof BlockSchema>;
28
+ export declare const DeviceSchema: z.ZodObject<{
29
+ id: z.ZodString;
30
+ ref: z.ZodString;
31
+ mpn: z.ZodOptional<z.ZodString>;
32
+ manufacturer: z.ZodOptional<z.ZodString>;
33
+ package: z.ZodOptional<z.ZodString>;
34
+ datasheet: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
35
+ lcsc: z.ZodOptional<z.ZodString>;
36
+ blockRef: z.ZodOptional<z.ZodString>;
37
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
38
+ requirementId: z.ZodString;
39
+ note: z.ZodOptional<z.ZodString>;
40
+ }, z.core.$strip>>>;
41
+ metadata: z.ZodDefault<z.ZodArray<z.ZodObject<{
42
+ key: z.ZodString;
43
+ value: z.ZodString;
44
+ }, z.core.$strip>>>;
45
+ }, z.core.$strip>;
46
+ export type Device = z.infer<typeof DeviceSchema>;
47
+ export declare const NetNodeSchema: z.ZodObject<{
48
+ deviceRef: z.ZodString;
49
+ pin: z.ZodString;
50
+ }, z.core.$strip>;
51
+ export declare const NetSchema: z.ZodObject<{
52
+ id: z.ZodString;
53
+ name: z.ZodString;
54
+ type: z.ZodDefault<z.ZodEnum<typeof NetType>>;
55
+ nodes: z.ZodDefault<z.ZodArray<z.ZodObject<{
56
+ deviceRef: z.ZodString;
57
+ pin: z.ZodString;
58
+ }, z.core.$strip>>>;
59
+ blockRef: z.ZodOptional<z.ZodString>;
60
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
61
+ requirementId: z.ZodString;
62
+ note: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$strip>>>;
64
+ metadata: z.ZodDefault<z.ZodArray<z.ZodObject<{
65
+ key: z.ZodString;
66
+ value: z.ZodString;
67
+ }, z.core.$strip>>>;
68
+ }, z.core.$strip>;
69
+ export type Net = z.infer<typeof NetSchema>;
70
+ export type NetNode = z.infer<typeof NetNodeSchema>;
71
+ export declare const PowerRailSchema: z.ZodObject<{
72
+ id: z.ZodString;
73
+ name: z.ZodString;
74
+ voltage: z.ZodNumber;
75
+ tolerance: z.ZodDefault<z.ZodNumber>;
76
+ maxCurrentAmps: z.ZodOptional<z.ZodNumber>;
77
+ sourceBlockRef: z.ZodOptional<z.ZodString>;
78
+ sinkBlockRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
79
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
80
+ requirementId: z.ZodString;
81
+ note: z.ZodOptional<z.ZodString>;
82
+ }, z.core.$strip>>>;
83
+ metadata: z.ZodDefault<z.ZodArray<z.ZodObject<{
84
+ key: z.ZodString;
85
+ value: z.ZodString;
86
+ }, z.core.$strip>>>;
87
+ }, z.core.$strip>;
88
+ export type PowerRail = z.infer<typeof PowerRailSchema>;
89
+ export declare const InterfacePinSchema: z.ZodObject<{
90
+ pin: z.ZodString;
91
+ signal: z.ZodString;
92
+ type: z.ZodOptional<z.ZodEnum<{
93
+ output: "output";
94
+ input: "input";
95
+ power: "power";
96
+ ground: "ground";
97
+ bidirectional: "bidirectional";
98
+ }>>;
99
+ }, z.core.$strip>;
100
+ export declare const InterfaceSchema: z.ZodObject<{
101
+ id: z.ZodString;
102
+ name: z.ZodString;
103
+ type: z.ZodString;
104
+ pinout: z.ZodDefault<z.ZodArray<z.ZodObject<{
105
+ pin: z.ZodString;
106
+ signal: z.ZodString;
107
+ type: z.ZodOptional<z.ZodEnum<{
108
+ output: "output";
109
+ input: "input";
110
+ power: "power";
111
+ ground: "ground";
112
+ bidirectional: "bidirectional";
113
+ }>>;
114
+ }, z.core.$strip>>>;
115
+ blockRef: z.ZodOptional<z.ZodString>;
116
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
117
+ requirementId: z.ZodString;
118
+ note: z.ZodOptional<z.ZodString>;
119
+ }, z.core.$strip>>>;
120
+ }, z.core.$strip>;
121
+ export type Interface = z.infer<typeof InterfaceSchema>;
122
+ export type InterfacePin = z.infer<typeof InterfacePinSchema>;
123
+ export declare const ConstraintSchema: z.ZodObject<{
124
+ id: z.ZodString;
125
+ type: z.ZodEnum<typeof ConstraintType>;
126
+ severity: z.ZodDefault<z.ZodEnum<typeof ConstraintSeverity>>;
127
+ description: z.ZodString;
128
+ scope: z.ZodOptional<z.ZodString>;
129
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
130
+ requirementId: z.ZodString;
131
+ note: z.ZodOptional<z.ZodString>;
132
+ }, z.core.$strip>>>;
133
+ }, z.core.$strip>;
134
+ export type Constraint = z.infer<typeof ConstraintSchema>;
135
+ export declare const BomIntentSchema: z.ZodObject<{
136
+ excludeRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
137
+ preferredVendors: z.ZodDefault<z.ZodArray<z.ZodString>>;
138
+ costTargetUsd: z.ZodOptional<z.ZodNumber>;
139
+ notes: z.ZodOptional<z.ZodString>;
140
+ }, z.core.$strip>;
141
+ export type BomIntent = z.infer<typeof BomIntentSchema>;
142
+ export declare const PcbIntentSchema: z.ZodObject<{
143
+ layerCount: z.ZodOptional<z.ZodNumber>;
144
+ stackup: z.ZodOptional<z.ZodString>;
145
+ widthMm: z.ZodOptional<z.ZodNumber>;
146
+ heightMm: z.ZodOptional<z.ZodNumber>;
147
+ material: z.ZodOptional<z.ZodString>;
148
+ notes: z.ZodOptional<z.ZodString>;
149
+ boardOutline: z.ZodOptional<z.ZodObject<{
150
+ shape: z.ZodArray<z.ZodObject<{
151
+ x: z.ZodNumber;
152
+ y: z.ZodNumber;
153
+ }, z.core.$strip>>;
154
+ cutouts: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodObject<{
155
+ x: z.ZodNumber;
156
+ y: z.ZodNumber;
157
+ }, z.core.$strip>>>>;
158
+ }, z.core.$strip>>;
159
+ layerStack: z.ZodOptional<z.ZodArray<z.ZodObject<{
160
+ name: z.ZodString;
161
+ type: z.ZodEnum<typeof BoardLayerType>;
162
+ thicknessMm: z.ZodNumber;
163
+ material: z.ZodString;
164
+ copperWeightOz: z.ZodOptional<z.ZodNumber>;
165
+ dielectricConstant: z.ZodOptional<z.ZodNumber>;
166
+ order: z.ZodNumber;
167
+ }, z.core.$strip>>>;
168
+ netClasses: z.ZodOptional<z.ZodArray<z.ZodObject<{
169
+ name: z.ZodString;
170
+ traceWidthMm: z.ZodNumber;
171
+ clearanceMm: z.ZodNumber;
172
+ viaDiameterMm: z.ZodOptional<z.ZodNumber>;
173
+ viaHoleMm: z.ZodOptional<z.ZodNumber>;
174
+ priority: z.ZodOptional<z.ZodNumber>;
175
+ netNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
176
+ }, z.core.$strip>>>;
177
+ clearanceRules: z.ZodOptional<z.ZodArray<z.ZodObject<{
178
+ netClassA: z.ZodString;
179
+ netClassB: z.ZodString;
180
+ clearanceMm: z.ZodNumber;
181
+ layer: z.ZodOptional<z.ZodString>;
182
+ }, z.core.$strip>>>;
183
+ keepoutAreas: z.ZodOptional<z.ZodArray<z.ZodObject<{
184
+ outline: z.ZodArray<z.ZodObject<{
185
+ x: z.ZodNumber;
186
+ y: z.ZodNumber;
187
+ }, z.core.$strip>>;
188
+ layer: z.ZodString;
189
+ restriction: z.ZodEnum<typeof KeepoutRestriction>;
190
+ description: z.ZodOptional<z.ZodString>;
191
+ }, z.core.$strip>>>;
192
+ placementZones: z.ZodOptional<z.ZodArray<z.ZodObject<{
193
+ outline: z.ZodArray<z.ZodObject<{
194
+ x: z.ZodNumber;
195
+ y: z.ZodNumber;
196
+ }, z.core.$strip>>;
197
+ layer: z.ZodEnum<typeof PlacementSide>;
198
+ zoneType: z.ZodEnum<typeof PlacementZoneType>;
199
+ name: z.ZodString;
200
+ allowedRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
201
+ description: z.ZodOptional<z.ZodString>;
202
+ }, z.core.$strip>>>;
203
+ mountingHoles: z.ZodOptional<z.ZodArray<z.ZodObject<{
204
+ x: z.ZodNumber;
205
+ y: z.ZodNumber;
206
+ diameterMm: z.ZodNumber;
207
+ type: z.ZodDefault<z.ZodEnum<typeof MountingHoleType>>;
208
+ plated: z.ZodDefault<z.ZodBoolean>;
209
+ }, z.core.$strip>>>;
210
+ fiducials: z.ZodOptional<z.ZodArray<z.ZodObject<{
211
+ x: z.ZodNumber;
212
+ y: z.ZodNumber;
213
+ type: z.ZodEnum<{
214
+ local: "local";
215
+ global: "global";
216
+ }>;
217
+ top: z.ZodBoolean;
218
+ bottom: z.ZodOptional<z.ZodBoolean>;
219
+ }, z.core.$strip>>>;
220
+ testPads: z.ZodOptional<z.ZodArray<z.ZodObject<{
221
+ x: z.ZodNumber;
222
+ y: z.ZodNumber;
223
+ netName: z.ZodString;
224
+ diameterMm: z.ZodNumber;
225
+ layer: z.ZodEnum<typeof PlacementSide>;
226
+ label: z.ZodOptional<z.ZodString>;
227
+ }, z.core.$strip>>>;
228
+ }, z.core.$strip>;
229
+ export type PcbIntent = z.infer<typeof PcbIntentSchema>;
230
+ export declare const ManufacturingIntentSchema: z.ZodObject<{
231
+ quantity: z.ZodOptional<z.ZodNumber>;
232
+ process: z.ZodOptional<z.ZodEnum<{
233
+ "lead-free": "lead-free";
234
+ "lead-based": "lead-based";
235
+ mixed: "mixed";
236
+ }>>;
237
+ timelineWeeks: z.ZodOptional<z.ZodNumber>;
238
+ notes: z.ZodOptional<z.ZodString>;
239
+ }, z.core.$strip>;
240
+ export type ManufacturingIntent = z.infer<typeof ManufacturingIntentSchema>;
241
+ export declare const CircuitIRSchema: z.ZodObject<{
242
+ $schema: z.ZodDefault<z.ZodLiteral<"circuit-ir/v1">>;
243
+ metadata: z.ZodObject<{
244
+ version: z.ZodDefault<z.ZodLiteral<"1.0.0">>;
245
+ createdAt: z.ZodOptional<z.ZodString>;
246
+ designIntentRef: z.ZodOptional<z.ZodString>;
247
+ validationStatus: z.ZodDefault<z.ZodEnum<typeof ValidationStatus>>;
248
+ }, z.core.$strip>;
249
+ blocks: z.ZodDefault<z.ZodArray<z.ZodObject<{
250
+ id: z.ZodString;
251
+ name: z.ZodString;
252
+ type: z.ZodString;
253
+ description: z.ZodOptional<z.ZodString>;
254
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
255
+ requirementId: z.ZodString;
256
+ note: z.ZodOptional<z.ZodString>;
257
+ }, z.core.$strip>>>;
258
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
259
+ }, z.core.$strip>>>;
260
+ devices: z.ZodDefault<z.ZodArray<z.ZodObject<{
261
+ id: z.ZodString;
262
+ ref: z.ZodString;
263
+ mpn: z.ZodOptional<z.ZodString>;
264
+ manufacturer: z.ZodOptional<z.ZodString>;
265
+ package: z.ZodOptional<z.ZodString>;
266
+ datasheet: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
267
+ lcsc: z.ZodOptional<z.ZodString>;
268
+ blockRef: z.ZodOptional<z.ZodString>;
269
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
270
+ requirementId: z.ZodString;
271
+ note: z.ZodOptional<z.ZodString>;
272
+ }, z.core.$strip>>>;
273
+ metadata: z.ZodDefault<z.ZodArray<z.ZodObject<{
274
+ key: z.ZodString;
275
+ value: z.ZodString;
276
+ }, z.core.$strip>>>;
277
+ }, z.core.$strip>>>;
278
+ nets: z.ZodDefault<z.ZodArray<z.ZodObject<{
279
+ id: z.ZodString;
280
+ name: z.ZodString;
281
+ type: z.ZodDefault<z.ZodEnum<typeof NetType>>;
282
+ nodes: z.ZodDefault<z.ZodArray<z.ZodObject<{
283
+ deviceRef: z.ZodString;
284
+ pin: z.ZodString;
285
+ }, z.core.$strip>>>;
286
+ blockRef: z.ZodOptional<z.ZodString>;
287
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
288
+ requirementId: z.ZodString;
289
+ note: z.ZodOptional<z.ZodString>;
290
+ }, z.core.$strip>>>;
291
+ metadata: z.ZodDefault<z.ZodArray<z.ZodObject<{
292
+ key: z.ZodString;
293
+ value: z.ZodString;
294
+ }, z.core.$strip>>>;
295
+ }, z.core.$strip>>>;
296
+ rails: z.ZodDefault<z.ZodArray<z.ZodObject<{
297
+ id: z.ZodString;
298
+ name: z.ZodString;
299
+ voltage: z.ZodNumber;
300
+ tolerance: z.ZodDefault<z.ZodNumber>;
301
+ maxCurrentAmps: z.ZodOptional<z.ZodNumber>;
302
+ sourceBlockRef: z.ZodOptional<z.ZodString>;
303
+ sinkBlockRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
304
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
305
+ requirementId: z.ZodString;
306
+ note: z.ZodOptional<z.ZodString>;
307
+ }, z.core.$strip>>>;
308
+ metadata: z.ZodDefault<z.ZodArray<z.ZodObject<{
309
+ key: z.ZodString;
310
+ value: z.ZodString;
311
+ }, z.core.$strip>>>;
312
+ }, z.core.$strip>>>;
313
+ interfaces: z.ZodDefault<z.ZodArray<z.ZodObject<{
314
+ id: z.ZodString;
315
+ name: z.ZodString;
316
+ type: z.ZodString;
317
+ pinout: z.ZodDefault<z.ZodArray<z.ZodObject<{
318
+ pin: z.ZodString;
319
+ signal: z.ZodString;
320
+ type: z.ZodOptional<z.ZodEnum<{
321
+ output: "output";
322
+ input: "input";
323
+ power: "power";
324
+ ground: "ground";
325
+ bidirectional: "bidirectional";
326
+ }>>;
327
+ }, z.core.$strip>>>;
328
+ blockRef: z.ZodOptional<z.ZodString>;
329
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
330
+ requirementId: z.ZodString;
331
+ note: z.ZodOptional<z.ZodString>;
332
+ }, z.core.$strip>>>;
333
+ }, z.core.$strip>>>;
334
+ constraints: z.ZodDefault<z.ZodArray<z.ZodObject<{
335
+ id: z.ZodString;
336
+ type: z.ZodEnum<typeof ConstraintType>;
337
+ severity: z.ZodDefault<z.ZodEnum<typeof ConstraintSeverity>>;
338
+ description: z.ZodString;
339
+ scope: z.ZodOptional<z.ZodString>;
340
+ designIntentRef: z.ZodDefault<z.ZodArray<z.ZodObject<{
341
+ requirementId: z.ZodString;
342
+ note: z.ZodOptional<z.ZodString>;
343
+ }, z.core.$strip>>>;
344
+ }, z.core.$strip>>>;
345
+ bom: z.ZodDefault<z.ZodObject<{
346
+ excludeRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
347
+ preferredVendors: z.ZodDefault<z.ZodArray<z.ZodString>>;
348
+ costTargetUsd: z.ZodOptional<z.ZodNumber>;
349
+ notes: z.ZodOptional<z.ZodString>;
350
+ }, z.core.$strip>>;
351
+ pcb: z.ZodDefault<z.ZodObject<{
352
+ layerCount: z.ZodOptional<z.ZodNumber>;
353
+ stackup: z.ZodOptional<z.ZodString>;
354
+ widthMm: z.ZodOptional<z.ZodNumber>;
355
+ heightMm: z.ZodOptional<z.ZodNumber>;
356
+ material: z.ZodOptional<z.ZodString>;
357
+ notes: z.ZodOptional<z.ZodString>;
358
+ boardOutline: z.ZodOptional<z.ZodObject<{
359
+ shape: z.ZodArray<z.ZodObject<{
360
+ x: z.ZodNumber;
361
+ y: z.ZodNumber;
362
+ }, z.core.$strip>>;
363
+ cutouts: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodObject<{
364
+ x: z.ZodNumber;
365
+ y: z.ZodNumber;
366
+ }, z.core.$strip>>>>;
367
+ }, z.core.$strip>>;
368
+ layerStack: z.ZodOptional<z.ZodArray<z.ZodObject<{
369
+ name: z.ZodString;
370
+ type: z.ZodEnum<typeof BoardLayerType>;
371
+ thicknessMm: z.ZodNumber;
372
+ material: z.ZodString;
373
+ copperWeightOz: z.ZodOptional<z.ZodNumber>;
374
+ dielectricConstant: z.ZodOptional<z.ZodNumber>;
375
+ order: z.ZodNumber;
376
+ }, z.core.$strip>>>;
377
+ netClasses: z.ZodOptional<z.ZodArray<z.ZodObject<{
378
+ name: z.ZodString;
379
+ traceWidthMm: z.ZodNumber;
380
+ clearanceMm: z.ZodNumber;
381
+ viaDiameterMm: z.ZodOptional<z.ZodNumber>;
382
+ viaHoleMm: z.ZodOptional<z.ZodNumber>;
383
+ priority: z.ZodOptional<z.ZodNumber>;
384
+ netNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
385
+ }, z.core.$strip>>>;
386
+ clearanceRules: z.ZodOptional<z.ZodArray<z.ZodObject<{
387
+ netClassA: z.ZodString;
388
+ netClassB: z.ZodString;
389
+ clearanceMm: z.ZodNumber;
390
+ layer: z.ZodOptional<z.ZodString>;
391
+ }, z.core.$strip>>>;
392
+ keepoutAreas: z.ZodOptional<z.ZodArray<z.ZodObject<{
393
+ outline: z.ZodArray<z.ZodObject<{
394
+ x: z.ZodNumber;
395
+ y: z.ZodNumber;
396
+ }, z.core.$strip>>;
397
+ layer: z.ZodString;
398
+ restriction: z.ZodEnum<typeof KeepoutRestriction>;
399
+ description: z.ZodOptional<z.ZodString>;
400
+ }, z.core.$strip>>>;
401
+ placementZones: z.ZodOptional<z.ZodArray<z.ZodObject<{
402
+ outline: z.ZodArray<z.ZodObject<{
403
+ x: z.ZodNumber;
404
+ y: z.ZodNumber;
405
+ }, z.core.$strip>>;
406
+ layer: z.ZodEnum<typeof PlacementSide>;
407
+ zoneType: z.ZodEnum<typeof PlacementZoneType>;
408
+ name: z.ZodString;
409
+ allowedRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
410
+ description: z.ZodOptional<z.ZodString>;
411
+ }, z.core.$strip>>>;
412
+ mountingHoles: z.ZodOptional<z.ZodArray<z.ZodObject<{
413
+ x: z.ZodNumber;
414
+ y: z.ZodNumber;
415
+ diameterMm: z.ZodNumber;
416
+ type: z.ZodDefault<z.ZodEnum<typeof MountingHoleType>>;
417
+ plated: z.ZodDefault<z.ZodBoolean>;
418
+ }, z.core.$strip>>>;
419
+ fiducials: z.ZodOptional<z.ZodArray<z.ZodObject<{
420
+ x: z.ZodNumber;
421
+ y: z.ZodNumber;
422
+ type: z.ZodEnum<{
423
+ local: "local";
424
+ global: "global";
425
+ }>;
426
+ top: z.ZodBoolean;
427
+ bottom: z.ZodOptional<z.ZodBoolean>;
428
+ }, z.core.$strip>>>;
429
+ testPads: z.ZodOptional<z.ZodArray<z.ZodObject<{
430
+ x: z.ZodNumber;
431
+ y: z.ZodNumber;
432
+ netName: z.ZodString;
433
+ diameterMm: z.ZodNumber;
434
+ layer: z.ZodEnum<typeof PlacementSide>;
435
+ label: z.ZodOptional<z.ZodString>;
436
+ }, z.core.$strip>>>;
437
+ }, z.core.$strip>>;
438
+ manufacturing: z.ZodDefault<z.ZodObject<{
439
+ quantity: z.ZodOptional<z.ZodNumber>;
440
+ process: z.ZodOptional<z.ZodEnum<{
441
+ "lead-free": "lead-free";
442
+ "lead-based": "lead-based";
443
+ mixed: "mixed";
444
+ }>>;
445
+ timelineWeeks: z.ZodOptional<z.ZodNumber>;
446
+ notes: z.ZodOptional<z.ZodString>;
447
+ }, z.core.$strip>>;
448
+ }, z.core.$strict>;
449
+ export type CircuitIR = z.infer<typeof CircuitIRSchema>;
450
+ /**
451
+ * Parse and validate an unknown input as a CircuitIR.
452
+ *
453
+ * Returns the validated CircuitIR on success.
454
+ * Throws `CircuitError` with structured errors on failure.
455
+ */
456
+ export declare function validateCircuitIR(input: unknown): CircuitIR;
457
+ /**
458
+ * Type guard: check whether an unknown value is a valid CircuitIR.
459
+ */
460
+ export declare function isCircuitIR(value: unknown): value is CircuitIR;