/** * Tree Placement Resolver * * Handles grid-based tree placement with collision detection, * cross-layer separation, and compositional hero anchors. */ import type { PlacementConfig, PlacementConstants, PlacedTree } from "../../domain/models/tree-silhouette-models.js"; export interface ITreePlacementResolver { /** Get placement constants derived from current config */ getPlacementConstants(): PlacementConstants; /** Get the current placement config */ getPlacementConfig(): PlacementConfig; /** Update placement configuration */ setPlacementConfig(config: Partial): void; /** Reset placement config to defaults */ resetPlacementConfig(): void; /** Get x position for a grid column with jitter */ getColumnX(column: number, canvasWidth: number): number; /** Get minimum spacing for a layer (near trees need more room) */ getMinSpacing(layer: number, canvasWidth: number): number; /** Check if a position would collide with already-placed trees */ hasCollision(x: number, layer: number, placedTrees: PlacedTree[], canvasWidth: number): boolean; /** Find a valid position by nudging from ideal, returns null if none found */ findValidPosition(idealX: number, layer: number, placedTrees: PlacedTree[], canvasWidth: number): number | null; /** Find nearest hero anchor to a position (if within snap distance) */ getNearestHeroAnchor(x: number, canvasWidth: number, usedAnchors: Set): number | null; /** Reset the seeded random generator */ resetSeed(): void; } export declare function createTreePlacementResolver(layerCount?: number): ITreePlacementResolver; //# sourceMappingURL=TreePlacementResolver.d.ts.map