@tscircuit/capacity-autorouter 0.0.48 → 0.0.50

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.ts CHANGED
@@ -125,7 +125,7 @@ declare class CapacityMeshEdgeSolver extends BaseSolver {
125
125
  }
126
126
 
127
127
  type BucketCoordinate$1 = `${number}x${number}`;
128
- declare class ObstacleTree {
128
+ declare class ObstacleSpatialHashIndex {
129
129
  obstacles: Obstacle[];
130
130
  buckets: Map<BucketCoordinate$1, [Obstacle, number][]>;
131
131
  CELL_SIZE: number;
@@ -181,7 +181,7 @@ declare class CapacityMeshNodeSolver extends BaseSolver {
181
181
  MAX_DEPTH: number;
182
182
  targets: Target[];
183
183
  targetTree: TargetTree;
184
- obstacleTree: ObstacleTree;
184
+ obstacleTree: ObstacleSpatialHashIndex;
185
185
  constructor(srj: SimpleRouteJson, opts?: CapacityMeshNodeSolverOptions$1);
186
186
  computeTargets(): Target[];
187
187
  _nextNodeCounter: number;
@@ -385,7 +385,7 @@ type NodeWithPortPoints = {
385
385
  *
386
386
  * z must be an integer
387
387
  */
388
- type HighDensityIntraNodeRoute = {
388
+ type HighDensityIntraNodeRoute$1 = {
389
389
  connectionName: string;
390
390
  traceThickness: number;
391
391
  viaDiameter: number;
@@ -399,7 +399,7 @@ type HighDensityIntraNodeRoute = {
399
399
  y: number;
400
400
  }>;
401
401
  };
402
- type HighDensityRoute = HighDensityIntraNodeRoute;
402
+ type HighDensityRoute$1 = HighDensityIntraNodeRoute$1;
403
403
 
404
404
  interface SegmentWithAssignedPoints extends NodePortSegment {
405
405
  assignedPoints?: {
@@ -511,7 +511,7 @@ type FutureConnection = {
511
511
  }[];
512
512
  };
513
513
  declare class SingleHighDensityRouteSolver extends BaseSolver {
514
- obstacleRoutes: HighDensityIntraNodeRoute[];
514
+ obstacleRoutes: HighDensityIntraNodeRoute$1[];
515
515
  bounds: {
516
516
  minX: number;
517
517
  maxX: number;
@@ -550,7 +550,7 @@ declare class SingleHighDensityRouteSolver extends BaseSolver {
550
550
  exploredNodes: Set<string>;
551
551
  candidates: SingleRouteCandidatePriorityQueue;
552
552
  connectionName: string;
553
- solvedPath: HighDensityIntraNodeRoute | null;
553
+ solvedPath: HighDensityIntraNodeRoute$1 | null;
554
554
  futureConnections: FutureConnection[];
555
555
  hyperParameters: Partial<HighDensityHyperParameters>;
556
556
  connMap?: ConnectivityMap;
@@ -561,7 +561,7 @@ declare class SingleHighDensityRouteSolver extends BaseSolver {
561
561
  debugEnabled: boolean;
562
562
  constructor(opts: {
563
563
  connectionName: string;
564
- obstacleRoutes: HighDensityIntraNodeRoute[];
564
+ obstacleRoutes: HighDensityIntraNodeRoute$1[];
565
565
  minDistBetweenEnteringPoints: number;
566
566
  bounds: {
567
567
  minX: number;
@@ -620,7 +620,7 @@ declare class IntraNodeRouteSolver extends BaseSolver {
620
620
  }[];
621
621
  }[];
622
622
  totalConnections: number;
623
- solvedRoutes: HighDensityIntraNodeRoute[];
623
+ solvedRoutes: HighDensityIntraNodeRoute$1[];
624
624
  failedSubSolvers: SingleHighDensityRouteSolver[];
625
625
  hyperParameters: Partial<HighDensityHyperParameters>;
626
626
  minDistBetweenEnteringPoints: number;
@@ -675,14 +675,14 @@ declare class HyperParameterSupervisorSolver<T extends BaseSolver> extends BaseS
675
675
  visualize(): GraphicsObject;
676
676
  }
677
677
 
678
- type Point$1 = {
678
+ type Point$2 = {
679
679
  x: number;
680
680
  y: number;
681
681
  z?: number;
682
682
  };
683
683
  type Route = {
684
- startPort: Point$1;
685
- endPort: Point$1;
684
+ startPort: Point$2;
685
+ endPort: Point$2;
686
686
  connectionName: string;
687
687
  };
688
688
  declare class TwoCrossingRoutesHighDensitySolver extends BaseSolver {
@@ -693,10 +693,10 @@ declare class TwoCrossingRoutesHighDensitySolver extends BaseSolver {
693
693
  obstacleMargin: number;
694
694
  layerCount: number;
695
695
  debugViaPositions: {
696
- via1: Point$1;
697
- via2: Point$1;
696
+ via1: Point$2;
697
+ via2: Point$2;
698
698
  }[];
699
- solvedRoutes: HighDensityIntraNodeRoute[];
699
+ solvedRoutes: HighDensityIntraNodeRoute$1[];
700
700
  bounds: {
701
701
  minX: number;
702
702
  maxX: number;
@@ -748,12 +748,12 @@ declare class TwoCrossingRoutesHighDensitySolver extends BaseSolver {
748
748
  /**
749
749
  * Get the solved routes
750
750
  */
751
- getSolvedRoutes(): HighDensityIntraNodeRoute[];
751
+ getSolvedRoutes(): HighDensityIntraNodeRoute$1[];
752
752
  }
753
753
 
754
754
  declare class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<IntraNodeRouteSolver | TwoCrossingRoutesHighDensitySolver> {
755
755
  constructorParams: ConstructorParameters<typeof IntraNodeRouteSolver>[0];
756
- solvedRoutes: HighDensityIntraNodeRoute[];
756
+ solvedRoutes: HighDensityIntraNodeRoute$1[];
757
757
  nodeWithPortPoints: NodeWithPortPoints;
758
758
  constructor(opts: ConstructorParameters<typeof IntraNodeRouteSolver>[0]);
759
759
  getCombinationDefs(): string[][];
@@ -811,7 +811,7 @@ declare class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<
811
811
 
812
812
  declare class HighDensitySolver extends BaseSolver {
813
813
  unsolvedNodePortPoints: NodeWithPortPoints[];
814
- routes: HighDensityIntraNodeRoute[];
814
+ routes: HighDensityIntraNodeRoute$1[];
815
815
  colorMap: Record<string, string>;
816
816
  readonly defaultViaDiameter = 0.6;
817
817
  readonly defaultTraceThickness = 0.15;
@@ -1008,8 +1008,8 @@ declare class NetToPointPairsSolver extends BaseSolver {
1008
1008
  }
1009
1009
 
1010
1010
  declare class SingleHighDensityRouteStitchSolver extends BaseSolver {
1011
- mergedHdRoute: HighDensityIntraNodeRoute;
1012
- remainingHdRoutes: HighDensityIntraNodeRoute[];
1011
+ mergedHdRoute: HighDensityIntraNodeRoute$1;
1012
+ remainingHdRoutes: HighDensityIntraNodeRoute$1[];
1013
1013
  start: {
1014
1014
  x: number;
1015
1015
  y: number;
@@ -1022,7 +1022,7 @@ declare class SingleHighDensityRouteStitchSolver extends BaseSolver {
1022
1022
  };
1023
1023
  constructor(opts: {
1024
1024
  connectionName?: string;
1025
- hdRoutes: HighDensityIntraNodeRoute[];
1025
+ hdRoutes: HighDensityIntraNodeRoute$1[];
1026
1026
  start: {
1027
1027
  x: number;
1028
1028
  y: number;
@@ -1040,7 +1040,7 @@ declare class SingleHighDensityRouteStitchSolver extends BaseSolver {
1040
1040
 
1041
1041
  type UnsolvedRoute = {
1042
1042
  connectionName: string;
1043
- hdRoutes: HighDensityIntraNodeRoute[];
1043
+ hdRoutes: HighDensityIntraNodeRoute$1[];
1044
1044
  start: {
1045
1045
  x: number;
1046
1046
  y: number;
@@ -1055,10 +1055,10 @@ type UnsolvedRoute = {
1055
1055
  declare class MultipleHighDensityRouteStitchSolver extends BaseSolver {
1056
1056
  unsolvedRoutes: UnsolvedRoute[];
1057
1057
  activeSolver: SingleHighDensityRouteStitchSolver | null;
1058
- mergedHdRoutes: HighDensityIntraNodeRoute[];
1058
+ mergedHdRoutes: HighDensityIntraNodeRoute$1[];
1059
1059
  constructor(opts: {
1060
1060
  connections: SimpleRouteConnection[];
1061
- hdRoutes: HighDensityIntraNodeRoute[];
1061
+ hdRoutes: HighDensityIntraNodeRoute$1[];
1062
1062
  layerCount: number;
1063
1063
  });
1064
1064
  _step(): void;
@@ -1371,51 +1371,51 @@ declare class SingleLayerNodeMergerSolver extends BaseSolver {
1371
1371
  visualize(): GraphicsObject;
1372
1372
  }
1373
1373
 
1374
- interface Point {
1374
+ interface Point$1 {
1375
1375
  x: number;
1376
1376
  y: number;
1377
1377
  z: number;
1378
1378
  }
1379
1379
  declare class SingleSimplifiedPathSolver extends BaseSolver {
1380
- newRoute: HighDensityIntraNodeRoute["route"];
1381
- newVias: HighDensityIntraNodeRoute["vias"];
1380
+ newRoute: HighDensityIntraNodeRoute$1["route"];
1381
+ newVias: HighDensityIntraNodeRoute$1["vias"];
1382
1382
  headIndex: number;
1383
1383
  tailIndex: number;
1384
- inputRoute: HighDensityIntraNodeRoute;
1385
- otherHdRoutes: HighDensityIntraNodeRoute[];
1384
+ inputRoute: HighDensityIntraNodeRoute$1;
1385
+ otherHdRoutes: HighDensityIntraNodeRoute$1[];
1386
1386
  obstacles: Obstacle[];
1387
1387
  connMap: ConnectivityMap;
1388
1388
  colorMap: Record<string, string>;
1389
1389
  constructor(params: {
1390
- inputRoute: HighDensityIntraNodeRoute;
1391
- otherHdRoutes: HighDensityIntraNodeRoute[];
1390
+ inputRoute: HighDensityIntraNodeRoute$1;
1391
+ otherHdRoutes: HighDensityIntraNodeRoute$1[];
1392
1392
  obstacles: Obstacle[];
1393
1393
  connMap: ConnectivityMap;
1394
1394
  colorMap: Record<string, string>;
1395
1395
  });
1396
1396
  getConstructorParams(): {
1397
- inputRoute: HighDensityIntraNodeRoute;
1398
- otherHdRoutes: HighDensityIntraNodeRoute[];
1397
+ inputRoute: HighDensityIntraNodeRoute$1;
1398
+ otherHdRoutes: HighDensityIntraNodeRoute$1[];
1399
1399
  obstacles: Obstacle[];
1400
1400
  connMap: Record<string, string[]>;
1401
1401
  colorMap: Record<string, string>;
1402
1402
  };
1403
- get simplifiedRoute(): HighDensityIntraNodeRoute;
1404
- isValidPath(pointsInRoute: Point[]): boolean;
1403
+ get simplifiedRoute(): HighDensityIntraNodeRoute$1;
1404
+ isValidPath(pointsInRoute: Point$1[]): boolean;
1405
1405
  _step(): void;
1406
1406
  getVisualsForNewRouteAndObstacles(): Required<GraphicsObject>;
1407
1407
  }
1408
1408
 
1409
1409
  declare class MultiSimplifiedPathSolver extends BaseSolver {
1410
- simplifiedHdRoutes: HighDensityIntraNodeRoute[];
1410
+ simplifiedHdRoutes: HighDensityIntraNodeRoute$1[];
1411
1411
  currentUnsimplifiedHdRouteIndex: number;
1412
1412
  activeSubSolver: SingleSimplifiedPathSolver | null;
1413
- unsimplifiedHdRoutes: HighDensityIntraNodeRoute[];
1413
+ unsimplifiedHdRoutes: HighDensityIntraNodeRoute$1[];
1414
1414
  obstacles: Obstacle[];
1415
1415
  connMap: ConnectivityMap;
1416
1416
  colorMap: Record<string, string>;
1417
1417
  constructor(params: {
1418
- unsimplifiedHdRoutes: HighDensityIntraNodeRoute[];
1418
+ unsimplifiedHdRoutes: HighDensityIntraNodeRoute$1[];
1419
1419
  obstacles: Obstacle[];
1420
1420
  connMap?: ConnectivityMap;
1421
1421
  colorMap?: Record<string, string>;
@@ -1428,6 +1428,111 @@ declare class CapacityMeshEdgeSolver2_NodeTreeOptimization extends CapacityMeshE
1428
1428
  step(): void;
1429
1429
  }
1430
1430
 
1431
+ interface Point {
1432
+ x: number;
1433
+ y: number;
1434
+ z: number;
1435
+ }
1436
+ type Point2D = {
1437
+ x: number;
1438
+ y: number;
1439
+ };
1440
+ type HighDensityIntraNodeRoute = {
1441
+ connectionName: string;
1442
+ traceThickness: number;
1443
+ viaDiameter: number;
1444
+ route: Array<{
1445
+ x: number;
1446
+ y: number;
1447
+ z: number;
1448
+ }>;
1449
+ vias: Array<{
1450
+ x: number;
1451
+ y: number;
1452
+ }>;
1453
+ };
1454
+ type HighDensityRoute = HighDensityIntraNodeRoute;
1455
+ declare class HighDensityRouteSpatialIndex {
1456
+ private segmentBuckets;
1457
+ private viaBuckets;
1458
+ private routes;
1459
+ private CELL_SIZE;
1460
+ constructor(routes: HighDensityRoute[], cellSize?: number);
1461
+ /**
1462
+ * Finds routes that potentially conflict with a given line segment within a margin.
1463
+ * Checks both segments and vias.
1464
+ * @param segmentStart Start point of the query segment.
1465
+ * @param segmentEnd End point of the query segment.
1466
+ * @param margin The minimum required clearance distance from the query segment's centerline.
1467
+ * @returns An array of conflicting routes and their minimum distance to the segment.
1468
+ */
1469
+ getConflictingRoutesForSegment(segmentStart: Point, // Keep Point for original Z data if needed elsewhere
1470
+ segmentEnd: Point, margin: number): Array<{
1471
+ conflictingRoute: HighDensityRoute;
1472
+ distance: number;
1473
+ }>;
1474
+ /**
1475
+ * Finds routes that pass near a given point within a margin.
1476
+ * Checks both segments and vias.
1477
+ * @param point The query point {x, y}. Z is ignored.
1478
+ * @param margin The minimum required clearance distance from the query point.
1479
+ * @returns An array of conflicting routes and their minimum distance to the point.
1480
+ */
1481
+ getConflictingRoutesNearPoint(point: Point2D, margin: number): Array<{
1482
+ conflictingRoute: HighDensityRoute;
1483
+ distance: number;
1484
+ }>;
1485
+ }
1486
+
1487
+ interface RouteSection {
1488
+ startIndex: number;
1489
+ endIndex: number;
1490
+ z: number;
1491
+ points: HighDensityRoute["route"];
1492
+ }
1493
+ declare class SingleRouteUselessViaRemovalSolver extends BaseSolver {
1494
+ obstacleSHI: ObstacleSpatialHashIndex;
1495
+ hdRouteSHI: HighDensityRouteSpatialIndex;
1496
+ unsimplifiedRoute: HighDensityRoute;
1497
+ routeSections: Array<RouteSection>;
1498
+ currentSectionIndex: number;
1499
+ TRACE_THICKNESS: number;
1500
+ OBSTACLE_MARGIN: number;
1501
+ constructor(params: {
1502
+ obstacleSHI: ObstacleSpatialHashIndex;
1503
+ hdRouteSHI: HighDensityRouteSpatialIndex;
1504
+ unsimplifiedRoute: HighDensityRoute;
1505
+ });
1506
+ breakRouteIntoSections(route: HighDensityRoute): never[] | this["routeSections"];
1507
+ _step(): void;
1508
+ canSectionMoveToLayer({ currentSection, targetZ, }: {
1509
+ currentSection: RouteSection;
1510
+ targetZ: number;
1511
+ }): boolean;
1512
+ getOptimizedHdRoute(): HighDensityRoute;
1513
+ visualize(): GraphicsObject;
1514
+ }
1515
+
1516
+ interface UselessViaRemovalSolverInput {
1517
+ unsimplifiedHdRoutes: HighDensityRoute$1[];
1518
+ obstacles: Obstacle[];
1519
+ colorMap: Record<string, string>;
1520
+ layerCount: number;
1521
+ }
1522
+ declare class UselessViaRemovalSolver extends BaseSolver {
1523
+ private input;
1524
+ unsimplifiedHdRoutes: HighDensityRoute$1[];
1525
+ optimizedHdRoutes: HighDensityRoute$1[];
1526
+ unprocessedRoutes: HighDensityRoute$1[];
1527
+ activeSubSolver?: SingleRouteUselessViaRemovalSolver | null | undefined;
1528
+ obstacleSHI: ObstacleSpatialHashIndex | null;
1529
+ hdRouteSHI: HighDensityRouteSpatialIndex | null;
1530
+ constructor(input: UselessViaRemovalSolverInput);
1531
+ _step(): void;
1532
+ getOptimizedHdRoutes(): HighDensityRoute$1[] | null;
1533
+ visualize(): GraphicsObject;
1534
+ }
1535
+
1431
1536
  interface CapacityMeshSolverOptions {
1432
1537
  capacityDepth?: number;
1433
1538
  targetMinCapacity?: number;
@@ -1455,6 +1560,7 @@ declare class AutoroutingPipelineSolver extends BaseSolver {
1455
1560
  highDensityStitchSolver?: MultipleHighDensityRouteStitchSolver;
1456
1561
  singleLayerNodeMerger?: SingleLayerNodeMergerSolver;
1457
1562
  strawSolver?: StrawSolver;
1563
+ uselessViaRemovalSolver?: UselessViaRemovalSolver;
1458
1564
  multiSimplifiedPathSolver?: MultiSimplifiedPathSolver;
1459
1565
  startTimeOfPhase: Record<string, number>;
1460
1566
  endTimeOfPhase: Record<string, number>;
@@ -1463,7 +1569,7 @@ declare class AutoroutingPipelineSolver extends BaseSolver {
1463
1569
  connMap: ConnectivityMap;
1464
1570
  srjWithPointPairs?: SimpleRouteJson;
1465
1571
  capacityNodes: CapacityMeshNode[] | null;
1466
- pipelineDef: (PipelineStep<typeof NetToPointPairsSolver> | PipelineStep<typeof CapacityMeshNodeSolver2_NodeUnderObstacle> | PipelineStep<typeof SingleLayerNodeMergerSolver> | PipelineStep<typeof StrawSolver> | PipelineStep<typeof CapacityMeshEdgeSolver2_NodeTreeOptimization> | PipelineStep<typeof CapacityPathingSolver5> | PipelineStep<typeof CapacityEdgeToPortSegmentSolver> | PipelineStep<typeof CapacitySegmentToPointSolver> | PipelineStep<typeof UnravelMultiSectionSolver> | PipelineStep<typeof HighDensitySolver> | PipelineStep<typeof MultipleHighDensityRouteStitchSolver> | PipelineStep<typeof MultiSimplifiedPathSolver>)[];
1572
+ pipelineDef: (PipelineStep<typeof NetToPointPairsSolver> | PipelineStep<typeof CapacityMeshNodeSolver2_NodeUnderObstacle> | PipelineStep<typeof SingleLayerNodeMergerSolver> | PipelineStep<typeof StrawSolver> | PipelineStep<typeof CapacityMeshEdgeSolver2_NodeTreeOptimization> | PipelineStep<typeof CapacityPathingSolver5> | PipelineStep<typeof CapacityEdgeToPortSegmentSolver> | PipelineStep<typeof CapacitySegmentToPointSolver> | PipelineStep<typeof UnravelMultiSectionSolver> | PipelineStep<typeof HighDensitySolver> | PipelineStep<typeof MultipleHighDensityRouteStitchSolver> | PipelineStep<typeof UselessViaRemovalSolver> | PipelineStep<typeof MultiSimplifiedPathSolver>)[];
1467
1573
  constructor(srj: SimpleRouteJson, opts?: CapacityMeshSolverOptions);
1468
1574
  currentPipelineStepIndex: number;
1469
1575
  _step(): void;
@@ -1486,7 +1592,7 @@ declare class AutoroutingPipelineSolver extends BaseSolver {
1486
1592
  * @returns The original connection name (e.g. "connection1")
1487
1593
  */
1488
1594
  private getOriginalConnectionName;
1489
- _getOutputHdRoutes(): HighDensityRoute[];
1595
+ _getOutputHdRoutes(): HighDensityRoute$1[];
1490
1596
  /**
1491
1597
  * Returns the SimpleRouteJson with routes converted to SimplifiedPcbTraces
1492
1598
  */