/** * One coherent baluster guard laid out along a rail path, as oriented boxes. * * A guard is built the way a joiner builds it: a newel at each end (and, when * a spacing is given, every bay between), a top rail and a bottom rail that * follow the path with a square fitting block closing every interior corner, * and square pickets spanning the two rails. The path sampling, corner finding * and newel/picket stations are the style-agnostic chassis in `guard-path.ts`, * shared with the deck post-and-rail guard; this file only turns those stations * into the baluster style's members. The caller renders the boxes * (`renderer.tsx`) or merges them into one mesh (`continuous-railings.tsx`), * so this stays pure data — no Three.js meshes, no React. * * `pickets` is a metre pitch sampled along the horizontal run, so the density * tracks the run rather than the path's tessellation. Pickets that fall inside * a newel are dropped. `reach` runs the rails that far past the top vertex * along the final slope to die into a post standing there; `topPost: false` * then omits the top newel. */ import { type GuardBox, type GuardRail, type Vec3 } from './guard-path.js'; export type BalusterGuardOptions = { railHeight: number; /** Metre pitch for pickets, sampled along the horizontal run. */ pickets: number; /** Metres between newels along the run; omit (or Infinity) for ends only. */ postSpacing?: number; topPost?: boolean; postThrough?: boolean; /** Metres the rails run past the top vertex, along the final slope. */ reach?: number; }; /** The two rails' section (`across` the run, `vertical`) and `y` off the nosing line. */ export declare const BALUSTER_RAIL_PROFILE: { readonly top: { readonly across: 0.062; readonly vertical: 0.05; readonly y: 0; }; readonly bottom: { readonly across: 0.045; readonly vertical: 0.045; readonly y: 0.08; }; }; /** A guard's rails as `{ center y off the nosing line, section across, vertical }`, * bottom-to-top. Shared with the flight-to-flight connector so a bridge carries * the same rails as the guards it joins. */ export declare function balusterGuardRails(railHeight: number): GuardRail[]; export declare function buildBalusterGuard(points: Vec3[], options: BalusterGuardOptions): GuardBox[]; //# sourceMappingURL=baluster-guard.d.ts.map