/** * Ecological Pattern Provider * * Manages ecological patterns and zone-based tree type selection. * Patterns define how tree types are distributed across the scene * based on real-world forest biomes. */ import type { TreeType, EcologicalPattern, EcologicalZone } from "../../domain/models/tree-silhouette-models.js"; export interface IEcologicalPatternProvider { /** Get the current pattern */ getCurrentPattern(): EcologicalPattern; /** Set the ecological pattern by ID */ setEcologicalPattern(patternId: string): void; /** Get the current ecological pattern ID */ getEcologicalPatternId(): string; /** Get the current ecological pattern details */ getEcologicalPattern(): EcologicalPattern; /** Get all available ecological patterns */ getAvailablePatterns(): EcologicalPattern[]; /** Set a random ecological pattern (excluding "random" itself) */ setRandomEcologicalPattern(): string; /** Find which zone a position falls into for the current pattern */ getZoneForPosition(normalizedX: number): EcologicalZone | null; /** * Pick a tree type based on position and current ecological pattern. * Respects visibility settings and zone weights. * @param normalizedX - Position as 0-1 normalized x coordinate * @param enabledTypes - List of currently visible/enabled tree types * @param random - Random function to use (for seeded randomness) */ pickTypeForPosition(normalizedX: number, enabledTypes: TreeType[], random: () => number): TreeType; } export declare function createEcologicalPatternProvider(): IEcologicalPatternProvider; //# sourceMappingURL=EcologicalPatternProvider.d.ts.map