import * as THREE from 'three'; import { BaseScatterSystem } from '../core'; /** * Brush configuration */ export interface BrushConfig { /** Brush radius in world units */ radius: number; /** Brush strength (0-1) */ strength?: number; /** Instances per paint stroke */ density?: number; /** Falloff type */ falloff?: 'constant' | 'linear' | 'smooth'; } /** * Painted instance data */ export interface PaintedInstance { id: number; position: THREE.Vector3; rotation: THREE.Euler; scale: THREE.Vector3; } /** * Brush tool for runtime scatter editing (paint/erase instances) */ export declare class ScatterBrush { private system; private paintedInstances; private radius; private strength; private density; private falloff; private rng; private nextPaintedId; constructor(system: BaseScatterSystem, config: BrushConfig); /** * Set brush radius */ setRadius(radius: number): void; /** * Set brush strength */ setStrength(strength: number): void; /** * Set brush density */ setDensity(density: number): void; /** * Get falloff multiplier at distance from brush center */ private getFalloff; /** * Paint instances at the given world position */ paint(center: THREE.Vector3, heightProvider?: (x: number, z: number) => number): PaintedInstance[]; /** * Erase instances within radius of the given position */ erase(center: THREE.Vector3): number; /** * Clear all painted instances */ clearAll(): void; /** * Get count of painted instances */ getPaintedCount(): number; /** * Get all painted instance positions */ getPaintedPositions(): THREE.Vector3[]; /** * Raycast helper to find intersection point */ static getIntersection(raycaster: THREE.Raycaster, surfaces: THREE.Object3D[]): THREE.Vector3 | null; } //# sourceMappingURL=ScatterBrush.d.ts.map