import * as THREE from 'three'; import { BaseScatterSystem } from '../core'; /** * Layer configuration for biome blending */ export interface ScatterLayer { /** Unique identifier for this layer */ name: string; /** The scatter system for this layer */ system: BaseScatterSystem; /** Base weight for this layer (0-1) */ weight: number; } /** * Blending configuration */ export interface BlenderConfig { /** Blend mask texture URL (each channel can represent a different layer) */ blendMaskUrl?: string; /** How world coordinates map to mask UV */ worldBounds?: THREE.Box2; /** Default update interval in frames (for performance) */ updateInterval?: number; } /** * Manages multiple scatter layers with weight-based blending * Allows smooth transitions between biomes using mask textures */ export declare class ScatterBlender extends THREE.Group { private scatterLayers; private blendMask; private blendMaskData; private worldBounds; private updateInterval; private frameCount; private isInitialized; constructor(config?: BlenderConfig); /** * Initialize the blender and load blend mask */ init(blendMaskUrl?: string): Promise; /** * Load blend mask texture */ loadBlendMask(url: string): Promise; /** * Add a scatter layer */ addLayer(name: string, system: BaseScatterSystem, weight?: number): void; /** * Remove a scatter layer */ removeLayer(name: string): void; /** * Get a layer by name */ getLayer(name: string): ScatterLayer | undefined; /** * Set layer weight dynamically */ setLayerWeight(name: string, weight: number): void; /** * Sample blend mask at world position * Returns RGBA values (0-1) for each channel */ sampleBlendMask(worldX: number, worldZ: number): { r: number; g: number; b: number; a: number; }; /** * Update all layers */ update(camera: THREE.Camera): void; /** * Get all layer names */ getLayerNames(): string[]; /** * Get combined statistics */ getStats(): { layers: number; totalInstances: number; totalChunks: number; }; /** * Dispose all layers */ dispose(): void; } //# sourceMappingURL=ScatterBlender.d.ts.map