import { type BuildingPalette, type BuildingStyle, type GeneratedBuilding } from "./buildings.js"; import type { BuildingEnvironmentDescriptor, EnvironmentArea, EnvironmentWorldFeature, WorldBounds } from "./features.js"; import type { Aabb } from "./geometry.js"; import { type TerrainPalette } from "./terrain.js"; export declare function resolveStructureBuildings(descriptor: BuildingEnvironmentDescriptor): GeneratedBuilding[]; export interface TerrainHeightStats { min: number; max: number; mean: number; finite: boolean; } export interface TerrainSummary { bounds: WorldBounds; height: TerrainHeightStats; palette: TerrainPalette; waterLevel?: number; } export interface StructureSummary { style: BuildingStyle; palette: BuildingPalette; requested: number; buildings: number; parts: number; bounds: Aabb; } export interface VegetationSummary { area: EnvironmentArea; density: number; } export interface WaterSummary { level: number; bounds: WorldBounds; } export interface WeatherSummary { kind: "rain" | "snow"; area: EnvironmentArea; density: number; } /** One road descriptor's resolved footprint: vertex count, width, and total centerline length. */ export interface RoadSummary { points: number; width: number; length: number; } export interface EnvironmentCounts { terrain: number; islands: number; structureGroups: number; buildings: number; buildingParts: number; vegetationFields: number; waterBodies: number; weatherSystems: number; roads: number; } export interface IslandSummary extends TerrainSummary { origin: readonly [number, number]; } export interface EnvironmentSummary { terrain?: TerrainSummary; islands: readonly IslandSummary[]; structures: readonly StructureSummary[]; vegetation: readonly VegetationSummary[]; water: readonly WaterSummary[]; weather: readonly WeatherSummary[]; roads: readonly RoadSummary[]; counts: EnvironmentCounts; isEmpty: boolean; } export declare function summarizeEnvironment(feature: EnvironmentWorldFeature): EnvironmentSummary;