@tscircuit/capacity-autorouter 0.0.139 → 0.0.140

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
@@ -2179,13 +2179,15 @@ interface CapacityMeshNodeSolverOptions {
2179
2179
  * aren't allowed, but there may be assignable vias on the PCB as obstacles.
2180
2180
  *
2181
2181
  * Behavior:
2182
- * - Outside obstacles, multi-layer nodes are *always* Z-split into single-layer nodes.
2183
- * - Inside an "assignable" obstacle (obstacle.netIsAssignable === true), we keep
2184
- * exactly *one* multi-layer node (capacity ~ 1 via region), i.e. we do not Z-split it.
2185
- * Further nodes completely inside the same assignable obstacle will be Z-split (one per layer).
2182
+ * - Outside assignable obstacles, multi-layer nodes are *always* Z-split into single-layer nodes.
2183
+ * - During mesh subdivision, nodes overlapping with "assignable" obstacles
2184
+ * (obstacle.netIsAssignable === true) are NOT filtered, allowing normal subdivision.
2185
+ * - After the main mesh subdivision is complete:
2186
+ * 1. All nodes overlapping with assignable obstacles are removed
2187
+ * 2. Each assignable obstacle is replaced with a single multi-layer node spanning all layers
2186
2188
  * - Single-layer nodes that are larger than MAX_SIZE_FOR_SINGLE_LAYER_NODES are XY-subdivided.
2187
- * - IMPORTANT: the single multi-layer node inside an assignable obstacle is **traversable**,
2188
- * so we mark `_containsObstacle = false` and `_completelyInsideObstacle = false` on it.
2189
+ * - IMPORTANT: the multi-layer nodes created from assignable obstacles are **traversable**,
2190
+ * so we mark `_containsObstacle = false` and `_completelyInsideObstacle = false` on them.
2189
2191
  */
2190
2192
  declare class CapacityMeshNodeSolver_OnlyTraverseLayersInAssignableObstacles extends CapacityMeshNodeSolver2_NodeUnderObstacle {
2191
2193
  srj: SimpleRouteJson;
@@ -2194,15 +2196,17 @@ declare class CapacityMeshNodeSolver_OnlyTraverseLayersInAssignableObstacles ext
2194
2196
  constructor(srj: SimpleRouteJson, opts?: CapacityMeshNodeSolverOptions);
2195
2197
  private isObstacleAssignable;
2196
2198
  private getOverlappingAssignableObstacles;
2197
- private isNodeCompletelyInsideSpecificObstacle;
2198
- private getAssignableContainer;
2199
2199
  shouldNodeBeXYSubdivided(node: CapacityMeshNode): boolean;
2200
2200
  /**
2201
- * Multi-layer nodes are filtered unless they are completely inside an
2202
- * assignable obstacle (the single allowed via region per obstacle).
2203
- * Single-layer nodes use the standard relaxed single-layer filtering.
2201
+ * Filter nodes for obstacles, but skip filtering for assignable obstacles.
2202
+ * Assignable obstacles will be handled separately at the end.
2204
2203
  */
2205
2204
  shouldFilterNodeForObstacle(node: CapacityMeshNode): boolean;
2205
+ /**
2206
+ * Remove nodes inside assignable obstacles and replace with single multi-layer nodes.
2207
+ * The new node's bounds are extended to cover all removed nodes' XY space.
2208
+ */
2209
+ private insertAssignableObstaclesAsNodes;
2206
2210
  _step(): void;
2207
2211
  }
2208
2212