@tscircuit/core 0.0.145 → 0.0.147

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 (3) hide show
  1. package/dist/index.d.ts +491 -38
  2. package/dist/index.js +793 -735
  3. package/package.json +4 -4
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import * as _tscircuit_props from '@tscircuit/props';
2
+ import { traceProps, SchematicPortArrangement, groupProps, boardProps, capacitorProps, chipProps, diodeProps, jumperProps, ledProps, powerSourceProps, resistorProps, constraintProps, fabricationNotePathProps, fabricationNoteTextProps, footprintProps, holeProps, pcbKeepoutProps, netAliasProps, platedHoleProps, silkscreenCircleProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, smtPadProps, traceHintProps, viaProps, batteryProps, pinHeaderProps, inductorProps, CapacitorProps, ChipProps, ResistorProps } from '@tscircuit/props';
1
3
  import React, { ReactElement } from 'react';
2
4
  import * as zod from 'zod';
3
5
  import { ZodType, z } from 'zod';
@@ -5,8 +7,6 @@ import { SchSymbol, BaseSymbolName } from 'schematic-symbols';
5
7
  import { PcbTraceError, PcbPlacementError, LayerRef, AnyCircuitElement, AnySourceComponent, RouteHintPoint } from 'circuit-json';
6
8
  import { Matrix } from 'transformation-matrix';
7
9
  import { SoupUtilObjects } from '@tscircuit/soup-util';
8
- import * as _tscircuit_props from '@tscircuit/props';
9
- import { traceProps, groupProps, boardProps, capacitorProps, chipProps, diodeProps, jumperProps, ledProps, powerSourceProps, resistorProps, constraintProps, fabricationNotePathProps, fabricationNoteTextProps, footprintProps, holeProps, pcbKeepoutProps, netAliasProps, platedHoleProps, silkscreenCircleProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, smtPadProps, traceHintProps, viaProps, batteryProps, inductorProps, CapacitorProps, ChipProps, ResistorProps } from '@tscircuit/props';
10
10
  import * as _tscircuit_layout from '@tscircuit/layout';
11
11
 
12
12
  declare const orderedRenderPhases: readonly ["ReactSubtreesRender", "InitializePortsFromChildren", "CreateNetsFromProps", "CreateTracesFromProps", "CreateTraceHintsFromProps", "SourceRender", "SourceParentAttachment", "PortDiscovery", "PortMatching", "SourceTraceRender", "SchematicComponentRender", "SchematicPortRender", "SchematicLayout", "SchematicTraceRender", "PcbComponentRender", "PcbPrimitiveRender", "PcbFootprintLayout", "PcbPortRender", "PcbPortAttachment", "PcbLayout", "PcbTraceRender", "PcbTraceHintRender", "PcbRouteNetIslands", "PcbComponentSizeCalculation", "CadModelRender"];
@@ -111,11 +111,43 @@ interface ISubcircuit extends PrimitiveComponent {
111
111
  _shouldUseTraceByTraceRouting(): boolean;
112
112
  }
113
113
 
114
+ type SchematicBoxPortPositionWithMetadata = {
115
+ trueIndex: number;
116
+ pinNumber: number;
117
+ side: "left" | "right" | "top" | "bottom";
118
+ distanceFromEdge: number;
119
+ x: number;
120
+ y: number;
121
+ };
122
+ /**
123
+ * Get the dimensions of a schematic box based on the provided parameters.
124
+ *
125
+ * A schematic box is a rectangular box with a set of pins on the sides.
126
+ *
127
+ * The user can customize the position of the pins and the spacing between them,
128
+ * this makes computing the box fairly complicated.
129
+ *
130
+ * A note on the internals:
131
+ * * A "true port" refers to a pin/port before it's remapped by the user to a
132
+ * different position. True Pin 1 is guaranteed to be in the top-left corner
133
+ * * We basically iterate over each side and compute how far we are from the
134
+ * edge for that side by adding margins together
135
+ */
136
+ interface SchematicBoxDimensions {
137
+ pinCount: number;
138
+ getPortPositionByPinNumber(pinNumber: number): SchematicBoxPortPositionWithMetadata | null;
139
+ getSize(): {
140
+ width: number;
141
+ height: number;
142
+ };
143
+ }
144
+
114
145
  interface BaseComponentConfig {
115
146
  componentName: string;
116
147
  schematicSymbolName?: BaseSymbolName | null;
117
148
  zodProps: ZodType;
118
149
  sourceFtype?: AnySourceComponent["ftype"] | null;
150
+ shouldRenderAsSchematicBox?: boolean;
119
151
  }
120
152
  /**
121
153
  * A PrimitiveComponent (SmtPad, Port etc.) doesn't have the ability to contain
@@ -271,6 +303,16 @@ declare abstract class PrimitiveComponent<ZodProps extends ZodType = any> extend
271
303
  }): PrimitiveComponent | null;
272
304
  getAvailablePcbLayers(): string[];
273
305
  getDescendants(): PrimitiveComponent[];
306
+ /**
307
+ * Return the number of pins in this component, this is important for
308
+ * NormalComponents
309
+ */
310
+ _getPinCount(): number;
311
+ /**
312
+ * If this component represents a SchematicBox (like a Chip), return the
313
+ * dimensions of the box, which allows computing the position of ports etc.
314
+ */
315
+ _getSchematicBoxDimensions(): SchematicBoxDimensions | null;
274
316
  renderError(message: Parameters<typeof Renderable.prototype.renderError>[0]): void;
275
317
  getString(): string;
276
318
  get [Symbol.toStringTag](): string;
@@ -671,6 +713,7 @@ type PortMap<T extends string> = {
671
713
  */
672
714
  declare class NormalComponent<ZodProps extends ZodType = any, PortNames extends string = never> extends PrimitiveComponent<ZodProps> {
673
715
  reactSubtrees: Array<ReactSubtree>;
716
+ _impliedFootprint?: string | undefined;
674
717
  isPrimitiveContainer: boolean;
675
718
  constructor(props: z.input<ZodProps>);
676
719
  /**
@@ -688,17 +731,21 @@ declare class NormalComponent<ZodProps extends ZodType = any, PortNames extends
688
731
  *
689
732
  */
690
733
  initPorts(): void;
734
+ _getImpliedFootprintString(): string | null;
691
735
  _addChildrenFromStringFootprint(): void;
692
736
  get portMap(): PortMap<PortNames>;
693
737
  getInstanceForReactElement(element: ReactElement): NormalComponent | null;
694
738
  doInitialSourceRender(): void;
695
739
  /**
696
740
  * Render the schematic component for this NormalComponent using the
697
- * config.schematicSymbolName if it exists.
741
+ * config.schematicSymbolName if it exists, or create a generic box if
742
+ * no symbol is defined.
698
743
  *
699
744
  * You can override this method to do more complicated things.
700
745
  */
701
746
  doInitialSchematicComponentRender(): void;
747
+ _doInitialSchematicComponentRenderWithSymbol(): void;
748
+ _doInitialSchematicComponentRenderWithSchematicBoxDimensions(): void;
702
749
  doInitialPcbComponentRender(): void;
703
750
  /**
704
751
  * At this stage, the smtpads/pcb primitives are placed, so we can compute
@@ -737,6 +784,13 @@ declare class NormalComponent<ZodProps extends ZodType = any, PortNames extends
737
784
  width: number;
738
785
  height: number;
739
786
  };
787
+ _getPinCount(): number;
788
+ /**
789
+ * Override the schematic port arrangement if you want to customize where pins
790
+ * appear on a schematic box, e.g. for a pin header
791
+ */
792
+ _getSchematicPortArrangement(): SchematicPortArrangement | null;
793
+ _getSchematicBoxDimensions(): SchematicBoxDimensions | null;
740
794
  doInitialCadModelRender(): void;
741
795
  }
742
796
 
@@ -1308,39 +1362,8 @@ declare class Capacitor extends NormalComponent<typeof capacitorProps, PassivePo
1308
1362
  doInitialSourceRender(): void;
1309
1363
  }
1310
1364
 
1311
- type PortInfo = {
1312
- trueIndex: number;
1313
- pinNumber: number;
1314
- side: "left" | "right" | "top" | "bottom" | "center";
1315
- distanceFromEdge: number;
1316
- x: number;
1317
- y: number;
1318
- };
1319
- /**
1320
- * Get the dimensions of a schematic box based on the provided parameters.
1321
- *
1322
- * A schematic box is a rectangular box with a set of pins on the sides.
1323
- *
1324
- * The user can customize the position of the pins and the spacing between them,
1325
- * this makes computing the box fairly complicated.
1326
- *
1327
- * A note on the internals:
1328
- * * A "true port" refers to a pin/port before it's remapped by the user to a
1329
- * different position. True Pin 1 is guaranteed to be in the top-left corner
1330
- * * We basically iterate over each side and compute how far we are from the
1331
- * edge for that side by adding margins together
1332
- */
1333
- interface SchematicBoxDimensions {
1334
- pinCount: number;
1335
- getPortPositionByPinNumber(pinNumber: number): PortInfo;
1336
- getSize(): {
1337
- width: number;
1338
- height: number;
1339
- };
1340
- }
1341
-
1342
1365
  declare class Chip<PinLabels extends string = never> extends NormalComponent<typeof chipProps, PinLabels> {
1343
- schematicDimensions: SchematicBoxDimensions | null;
1366
+ schematicBoxDimensions: SchematicBoxDimensions | null;
1344
1367
  get config(): {
1345
1368
  componentName: string;
1346
1369
  zodProps: zod.ZodObject<zod.objectUtil.extendShape<zod.objectUtil.extendShape<zod.objectUtil.extendShape<{
@@ -1932,9 +1955,9 @@ declare class Chip<PinLabels extends string = never> extends NormalComponent<typ
1932
1955
  schWidth?: string | number | undefined;
1933
1956
  schHeight?: string | number | undefined;
1934
1957
  }>;
1958
+ shouldRenderAsSchematicBox: boolean;
1935
1959
  };
1936
1960
  doInitialSourceRender(): void;
1937
- doInitialSchematicComponentRender(): void;
1938
1961
  doInitialPcbComponentRender(): void;
1939
1962
  }
1940
1963
 
@@ -2940,9 +2963,9 @@ declare class Jumper<PinLabels extends string = never> extends NormalComponent<t
2940
2963
  schHeight?: string | number | undefined;
2941
2964
  schDirection?: "left" | "right" | undefined;
2942
2965
  }>;
2966
+ shouldRenderAsSchematicBox: boolean;
2943
2967
  };
2944
2968
  doInitialSourceRender(): void;
2945
- doInitialSchematicComponentRender(): void;
2946
2969
  doInitialPcbComponentRender(): void;
2947
2970
  }
2948
2971
 
@@ -5811,6 +5834,435 @@ declare class Battery extends NormalComponent<typeof batteryProps, PassivePorts>
5811
5834
  doInitialSourceRender(): void;
5812
5835
  }
5813
5836
 
5837
+ declare class PinHeader extends NormalComponent<typeof pinHeaderProps> {
5838
+ get config(): {
5839
+ componentName: string;
5840
+ zodProps: zod.ZodObject<zod.objectUtil.extendShape<zod.objectUtil.extendShape<zod.objectUtil.extendShape<{
5841
+ pcbX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5842
+ pcbY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5843
+ pcbRotation: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5844
+ schX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5845
+ schY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5846
+ schRotation: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5847
+ layer: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, zod.ZodObject<{
5848
+ name: zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
5849
+ }, "strip", zod.ZodTypeAny, {
5850
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
5851
+ }, {
5852
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
5853
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
5854
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
5855
+ }>>;
5856
+ footprint: zod.ZodOptional<zod.ZodType<_tscircuit_props.Footprint, zod.ZodTypeDef, _tscircuit_props.Footprint>>;
5857
+ }, {
5858
+ supplierPartNumbers: zod.ZodOptional<zod.ZodRecord<zod.ZodEnum<["jlcpcb", "macrofab", "pcbway", "digikey", "mouser", "lcsc"]>, zod.ZodArray<zod.ZodString, "many">>>;
5859
+ }>, {
5860
+ key: zod.ZodOptional<zod.ZodAny>;
5861
+ name: zod.ZodString;
5862
+ cadModel: zod.ZodOptional<zod.ZodUnion<[zod.ZodString, zod.ZodObject<zod.objectUtil.extendShape<{
5863
+ rotationOffset: zod.ZodOptional<zod.ZodUnion<[zod.ZodNumber, zod.ZodObject<{
5864
+ x: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
5865
+ y: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
5866
+ z: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
5867
+ }, "strip", zod.ZodTypeAny, {
5868
+ x: string | number;
5869
+ y: string | number;
5870
+ z: string | number;
5871
+ }, {
5872
+ x: string | number;
5873
+ y: string | number;
5874
+ z: string | number;
5875
+ }>]>>;
5876
+ positionOffset: zod.ZodOptional<zod.ZodObject<{
5877
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5878
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5879
+ z: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5880
+ }, "strip", zod.ZodTypeAny, {
5881
+ x: number;
5882
+ y: number;
5883
+ z: number;
5884
+ }, {
5885
+ x: string | number;
5886
+ y: string | number;
5887
+ z: string | number;
5888
+ }>>;
5889
+ size: zod.ZodOptional<zod.ZodObject<{
5890
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5891
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5892
+ z: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5893
+ }, "strip", zod.ZodTypeAny, {
5894
+ x: number;
5895
+ y: number;
5896
+ z: number;
5897
+ }, {
5898
+ x: string | number;
5899
+ y: string | number;
5900
+ z: string | number;
5901
+ }>>;
5902
+ }, {
5903
+ stlUrl: zod.ZodString;
5904
+ }>, "strip", zod.ZodTypeAny, {
5905
+ stlUrl: string;
5906
+ rotationOffset?: number | {
5907
+ x: string | number;
5908
+ y: string | number;
5909
+ z: string | number;
5910
+ } | undefined;
5911
+ positionOffset?: {
5912
+ x: number;
5913
+ y: number;
5914
+ z: number;
5915
+ } | undefined;
5916
+ size?: {
5917
+ x: number;
5918
+ y: number;
5919
+ z: number;
5920
+ } | undefined;
5921
+ }, {
5922
+ stlUrl: string;
5923
+ rotationOffset?: number | {
5924
+ x: string | number;
5925
+ y: string | number;
5926
+ z: string | number;
5927
+ } | undefined;
5928
+ positionOffset?: {
5929
+ x: string | number;
5930
+ y: string | number;
5931
+ z: string | number;
5932
+ } | undefined;
5933
+ size?: {
5934
+ x: string | number;
5935
+ y: string | number;
5936
+ z: string | number;
5937
+ } | undefined;
5938
+ }>, zod.ZodObject<zod.objectUtil.extendShape<{
5939
+ rotationOffset: zod.ZodOptional<zod.ZodUnion<[zod.ZodNumber, zod.ZodObject<{
5940
+ x: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
5941
+ y: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
5942
+ z: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
5943
+ }, "strip", zod.ZodTypeAny, {
5944
+ x: string | number;
5945
+ y: string | number;
5946
+ z: string | number;
5947
+ }, {
5948
+ x: string | number;
5949
+ y: string | number;
5950
+ z: string | number;
5951
+ }>]>>;
5952
+ positionOffset: zod.ZodOptional<zod.ZodObject<{
5953
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5954
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5955
+ z: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5956
+ }, "strip", zod.ZodTypeAny, {
5957
+ x: number;
5958
+ y: number;
5959
+ z: number;
5960
+ }, {
5961
+ x: string | number;
5962
+ y: string | number;
5963
+ z: string | number;
5964
+ }>>;
5965
+ size: zod.ZodOptional<zod.ZodObject<{
5966
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5967
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5968
+ z: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5969
+ }, "strip", zod.ZodTypeAny, {
5970
+ x: number;
5971
+ y: number;
5972
+ z: number;
5973
+ }, {
5974
+ x: string | number;
5975
+ y: string | number;
5976
+ z: string | number;
5977
+ }>>;
5978
+ }, {
5979
+ objUrl: zod.ZodString;
5980
+ mtlUrl: zod.ZodOptional<zod.ZodString>;
5981
+ }>, "strip", zod.ZodTypeAny, {
5982
+ objUrl: string;
5983
+ rotationOffset?: number | {
5984
+ x: string | number;
5985
+ y: string | number;
5986
+ z: string | number;
5987
+ } | undefined;
5988
+ positionOffset?: {
5989
+ x: number;
5990
+ y: number;
5991
+ z: number;
5992
+ } | undefined;
5993
+ size?: {
5994
+ x: number;
5995
+ y: number;
5996
+ z: number;
5997
+ } | undefined;
5998
+ mtlUrl?: string | undefined;
5999
+ }, {
6000
+ objUrl: string;
6001
+ rotationOffset?: number | {
6002
+ x: string | number;
6003
+ y: string | number;
6004
+ z: string | number;
6005
+ } | undefined;
6006
+ positionOffset?: {
6007
+ x: string | number;
6008
+ y: string | number;
6009
+ z: string | number;
6010
+ } | undefined;
6011
+ size?: {
6012
+ x: string | number;
6013
+ y: string | number;
6014
+ z: string | number;
6015
+ } | undefined;
6016
+ mtlUrl?: string | undefined;
6017
+ }>, zod.ZodObject<zod.objectUtil.extendShape<{
6018
+ rotationOffset: zod.ZodOptional<zod.ZodUnion<[zod.ZodNumber, zod.ZodObject<{
6019
+ x: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
6020
+ y: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
6021
+ z: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
6022
+ }, "strip", zod.ZodTypeAny, {
6023
+ x: string | number;
6024
+ y: string | number;
6025
+ z: string | number;
6026
+ }, {
6027
+ x: string | number;
6028
+ y: string | number;
6029
+ z: string | number;
6030
+ }>]>>;
6031
+ positionOffset: zod.ZodOptional<zod.ZodObject<{
6032
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
6033
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
6034
+ z: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
6035
+ }, "strip", zod.ZodTypeAny, {
6036
+ x: number;
6037
+ y: number;
6038
+ z: number;
6039
+ }, {
6040
+ x: string | number;
6041
+ y: string | number;
6042
+ z: string | number;
6043
+ }>>;
6044
+ size: zod.ZodOptional<zod.ZodObject<{
6045
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
6046
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
6047
+ z: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
6048
+ }, "strip", zod.ZodTypeAny, {
6049
+ x: number;
6050
+ y: number;
6051
+ z: number;
6052
+ }, {
6053
+ x: string | number;
6054
+ y: string | number;
6055
+ z: string | number;
6056
+ }>>;
6057
+ }, {
6058
+ jscad: zod.ZodRecord<zod.ZodString, zod.ZodAny>;
6059
+ }>, "strip", zod.ZodTypeAny, {
6060
+ jscad: Record<string, any>;
6061
+ rotationOffset?: number | {
6062
+ x: string | number;
6063
+ y: string | number;
6064
+ z: string | number;
6065
+ } | undefined;
6066
+ positionOffset?: {
6067
+ x: number;
6068
+ y: number;
6069
+ z: number;
6070
+ } | undefined;
6071
+ size?: {
6072
+ x: number;
6073
+ y: number;
6074
+ z: number;
6075
+ } | undefined;
6076
+ }, {
6077
+ jscad: Record<string, any>;
6078
+ rotationOffset?: number | {
6079
+ x: string | number;
6080
+ y: string | number;
6081
+ z: string | number;
6082
+ } | undefined;
6083
+ positionOffset?: {
6084
+ x: string | number;
6085
+ y: string | number;
6086
+ z: string | number;
6087
+ } | undefined;
6088
+ size?: {
6089
+ x: string | number;
6090
+ y: string | number;
6091
+ z: string | number;
6092
+ } | undefined;
6093
+ }>]>>;
6094
+ children: zod.ZodOptional<zod.ZodAny>;
6095
+ symbolName: zod.ZodOptional<zod.ZodString>;
6096
+ }>, {
6097
+ pinCount: zod.ZodNumber;
6098
+ pitch: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
6099
+ gender: zod.ZodOptional<zod.ZodEnum<["male", "female"]>>;
6100
+ showSilkscreenPinLabels: zod.ZodOptional<zod.ZodBoolean>;
6101
+ doubleRow: zod.ZodOptional<zod.ZodBoolean>;
6102
+ holeDiameter: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
6103
+ platedDiameter: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
6104
+ pinLabels: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
6105
+ }>, "strip", zod.ZodTypeAny, {
6106
+ name: string;
6107
+ pinCount: number;
6108
+ pcbX?: number | undefined;
6109
+ pcbY?: number | undefined;
6110
+ pcbRotation?: number | undefined;
6111
+ schX?: number | undefined;
6112
+ schY?: number | undefined;
6113
+ schRotation?: number | undefined;
6114
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
6115
+ footprint?: _tscircuit_props.Footprint | undefined;
6116
+ supplierPartNumbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
6117
+ key?: any;
6118
+ cadModel?: string | {
6119
+ stlUrl: string;
6120
+ rotationOffset?: number | {
6121
+ x: string | number;
6122
+ y: string | number;
6123
+ z: string | number;
6124
+ } | undefined;
6125
+ positionOffset?: {
6126
+ x: number;
6127
+ y: number;
6128
+ z: number;
6129
+ } | undefined;
6130
+ size?: {
6131
+ x: number;
6132
+ y: number;
6133
+ z: number;
6134
+ } | undefined;
6135
+ } | {
6136
+ objUrl: string;
6137
+ rotationOffset?: number | {
6138
+ x: string | number;
6139
+ y: string | number;
6140
+ z: string | number;
6141
+ } | undefined;
6142
+ positionOffset?: {
6143
+ x: number;
6144
+ y: number;
6145
+ z: number;
6146
+ } | undefined;
6147
+ size?: {
6148
+ x: number;
6149
+ y: number;
6150
+ z: number;
6151
+ } | undefined;
6152
+ mtlUrl?: string | undefined;
6153
+ } | {
6154
+ jscad: Record<string, any>;
6155
+ rotationOffset?: number | {
6156
+ x: string | number;
6157
+ y: string | number;
6158
+ z: string | number;
6159
+ } | undefined;
6160
+ positionOffset?: {
6161
+ x: number;
6162
+ y: number;
6163
+ z: number;
6164
+ } | undefined;
6165
+ size?: {
6166
+ x: number;
6167
+ y: number;
6168
+ z: number;
6169
+ } | undefined;
6170
+ } | undefined;
6171
+ children?: any;
6172
+ symbolName?: string | undefined;
6173
+ holeDiameter?: number | undefined;
6174
+ pinLabels?: string[] | undefined;
6175
+ pitch?: number | undefined;
6176
+ gender?: "male" | "female" | undefined;
6177
+ showSilkscreenPinLabels?: boolean | undefined;
6178
+ doubleRow?: boolean | undefined;
6179
+ platedDiameter?: number | undefined;
6180
+ }, {
6181
+ name: string;
6182
+ pinCount: number;
6183
+ pcbX?: string | number | undefined;
6184
+ pcbY?: string | number | undefined;
6185
+ pcbRotation?: string | number | undefined;
6186
+ schX?: string | number | undefined;
6187
+ schY?: string | number | undefined;
6188
+ schRotation?: string | number | undefined;
6189
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
6190
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
6191
+ } | undefined;
6192
+ footprint?: _tscircuit_props.Footprint | undefined;
6193
+ supplierPartNumbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
6194
+ key?: any;
6195
+ cadModel?: string | {
6196
+ stlUrl: string;
6197
+ rotationOffset?: number | {
6198
+ x: string | number;
6199
+ y: string | number;
6200
+ z: string | number;
6201
+ } | undefined;
6202
+ positionOffset?: {
6203
+ x: string | number;
6204
+ y: string | number;
6205
+ z: string | number;
6206
+ } | undefined;
6207
+ size?: {
6208
+ x: string | number;
6209
+ y: string | number;
6210
+ z: string | number;
6211
+ } | undefined;
6212
+ } | {
6213
+ objUrl: string;
6214
+ rotationOffset?: number | {
6215
+ x: string | number;
6216
+ y: string | number;
6217
+ z: string | number;
6218
+ } | undefined;
6219
+ positionOffset?: {
6220
+ x: string | number;
6221
+ y: string | number;
6222
+ z: string | number;
6223
+ } | undefined;
6224
+ size?: {
6225
+ x: string | number;
6226
+ y: string | number;
6227
+ z: string | number;
6228
+ } | undefined;
6229
+ mtlUrl?: string | undefined;
6230
+ } | {
6231
+ jscad: Record<string, any>;
6232
+ rotationOffset?: number | {
6233
+ x: string | number;
6234
+ y: string | number;
6235
+ z: string | number;
6236
+ } | undefined;
6237
+ positionOffset?: {
6238
+ x: string | number;
6239
+ y: string | number;
6240
+ z: string | number;
6241
+ } | undefined;
6242
+ size?: {
6243
+ x: string | number;
6244
+ y: string | number;
6245
+ z: string | number;
6246
+ } | undefined;
6247
+ } | undefined;
6248
+ children?: any;
6249
+ symbolName?: string | undefined;
6250
+ holeDiameter?: string | number | undefined;
6251
+ pinLabels?: string[] | undefined;
6252
+ pitch?: string | number | undefined;
6253
+ gender?: "male" | "female" | undefined;
6254
+ showSilkscreenPinLabels?: boolean | undefined;
6255
+ doubleRow?: boolean | undefined;
6256
+ platedDiameter?: string | number | undefined;
6257
+ }>;
6258
+ shouldRenderAsSchematicBox: boolean;
6259
+ };
6260
+ _getImpliedFootprintString(): string | null;
6261
+ initPorts(): void;
6262
+ _getSchematicPortArrangement(): SchematicPortArrangement | null;
6263
+ doInitialSourceRender(): void;
6264
+ }
6265
+
5814
6266
  declare class Inductor extends NormalComponent<typeof inductorProps, PassivePorts> {
5815
6267
  get config(): {
5816
6268
  componentName: string;
@@ -6423,9 +6875,10 @@ declare global {
6423
6875
  constraint: _tscircuit_props.ConstraintProps;
6424
6876
  constrainedlayout: _tscircuit_props.ConstrainedLayoutProps;
6425
6877
  battery: _tscircuit_props.BatteryProps;
6878
+ pinheader: _tscircuit_props.PinHeaderProps;
6426
6879
  jscad: any;
6427
6880
  }
6428
6881
  }
6429
6882
  }
6430
6883
 
6431
- export { Battery, Board, Capacitor, Chip, Circuit, type ComponentWithPins, Constraint, Diode, FabricationNotePath, FabricationNoteText, Footprint, Group, Hole, type IRenderable, Inductor, Jumper, Keepout, Led, Net, NetAlias, NormalComponent, type PinLabelSpec, PlatedHole, Port, PowerSource, PrimitiveComponent, Project, Renderable, Resistor, SilkscreenCircle, SilkscreenPath, SilkscreenRect, SilkscreenText, SmtPad, Trace, TraceHint, Via, createUseComponent, useCapacitor, useChip, useDiode, useRenderedCircuit, useResistor };
6884
+ export { Battery, Board, Capacitor, Chip, Circuit, type ComponentWithPins, Constraint, Diode, FabricationNotePath, FabricationNoteText, Footprint, Group, Hole, type IRenderable, Inductor, Jumper, Keepout, Led, Net, NetAlias, NormalComponent, PinHeader, type PinLabelSpec, PlatedHole, Port, PowerSource, PrimitiveComponent, Project, Renderable, Resistor, SilkscreenCircle, SilkscreenPath, SilkscreenRect, SilkscreenText, SmtPad, Trace, TraceHint, Via, createUseComponent, useCapacitor, useChip, useDiode, useRenderedCircuit, useResistor };