import { type ProbeTriangle, type SpawnProbeResult } from './spawnProbe'; import type { Bounds, Vec3 } from './types'; /** * Cross-asset ground spawn probing. * * The single-sheet importer probed the one mesh that backed collision. A * multi-asset package's collision is spread across N placed proxy meshes, so * the probe must consider candidate surfaces across ALL of them — in world * space, after each instance's placement transform — and reuse the same * canopy/rooftop rejection rules: a column with more than one separated surface * is a roof or a canopy over ground, never a spawn point. */ export declare function readGlbTriangles(bytes: Buffer): Promise; /** Applies a TRS placement transform to every triangle vertex. */ export declare function placeTriangles(triangles: readonly ProbeTriangle[], transform: { position: Vec3; rotation: [number, number, number, number]; scale: Vec3; }): ProbeTriangle[]; /** * Probes a standing position against the union of all placed collider proxies. * Triangle reads are deduplicated by resource and capped: a pack of thousands * of high-poly proxies must not build an unbounded triangle list just to find * open ground, so beyond the cap vertices are stride-sampled evenly across the * whole set instead of taken from whichever asset happened to be read first. */ export declare function probeMultiAssetSpawn(input: { /** One entry per PLACED instance; `bytes` should be shared (deduped) upstream. */ colliders: ReadonlyArray<{ bytes: Buffer; transform: { position: Vec3; rotation: [number, number, number, number]; scale: Vec3; }; }>; bounds: Bounds; clearanceHeightM: number; maxTriangles?: number; }): Promise;