import type { TerrainField } from '@pascal-app/core'; import { type BufferGeometry, type Material } from 'three'; import { MeshBasicNodeMaterial } from 'three/webgpu'; /** Presentation-only meshes are never picked: clicks fall through to what lies under them. */ export declare const noopRaycast: () => void; type Point = readonly [number, number]; /** The veil of the lot's own ground: its fill, or its sculpted terrain. */ export declare function groundVeilMaterial(groundColor: string): MeshBasicNodeMaterial; /** * The veil of the horizon disc: the ground past the lot only (under the lot's own veil a second * one would read as a step at the property line), dissolving into the backdrop by twice the lot's * radius. */ export declare function horizonVeilMaterial(groundColor: string, lot: ReadonlyArray, bounds: { cx: number; cz: number; radius: number; }): MeshBasicNodeMaterial; /** The grade ring's ribbon along one outline where the ground meets a level below grade. */ export declare function gradeRingGeometry(outline: ReadonlyArray, field: TerrainField | null): BufferGeometry; export declare function gradeRingMaterial(): MeshBasicNodeMaterial; /** * Drawn only while the ground is veiled: the veil of one solid ground surface (the same geometry * in the same place), or the grade ring. A direct child of the site, as the surfaces are, so the * captures find it (`siteGround`) and hide it with the site's other surfaces. * * `shows` says when a live view draws it: `'window'` (a sheet: only where the ground window veils * a hillside in the eye's way; wholesale the ground is a hole, not a sheet) or `'veiled'` (the * ring: wherever any ground is veiled). A capture shows both by setting `visible` itself. */ export declare function GroundVeil({ geometry, material, position, rotation, shows, }: { geometry: BufferGeometry; material: Material; position?: [number, number, number]; rotation?: [number, number, number]; shows?: 'window' | 'veiled'; }): import("react").JSX.Element; export {}; //# sourceMappingURL=ground-veil.d.ts.map