/** * One coherent cable guard laid out along a rail path, as oriented boxes — the * modern metal cable rail in metres: a slim square post at each end (and every * bay ≤ 4 ft between), a flat cap rail following the path over them, and * slender round cables run as straight spans from post to post, with a short * swage sleeve where each cable dies into a terminal post. It shares the path * sampling, corner finding and newel/picket stations in `guard-path.ts` with * the baluster and deck post-and-rail guards, so a straight flight, a chained * L/U landing turn, a winder, a curved or spiral sweep and an integrated top * landing all read as the same cable rail; only the sections and the infill * differ. Pure data — no Three.js, no React. * * The cables are the physical intent of a cable rail, not a fiction: real cable * is pulled taut, so on a curved or spiral sweep it cannot follow the arc. Each * cable level is therefore a run of straight chords between consecutive posts * (the posts are the support stations, spaced by run and so independent of the * tread count), while the cap rail follows the curve. On a straight flight the * collinear posts make those chords read as one line. * * `reach` runs the cap and the top cables that far past the top vertex along * the final slope to die into a post standing there; `topPost: false` then * omits the top post. `postThrough` runs the posts past the cap with a small * cap of their own. */ import { type GuardBox, type GuardRail, type Vec3 } from './guard-path.js'; export type CableGuardOptions = { railHeight: number; /** Metres between posts 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 cable guard's single flat cap rail. Shared with the flight connector so * a bridge between flights carries the same cap as the guards it joins. */ export declare function cableGuardRails(railHeight: number): GuardRail[]; export declare function buildCableGuard(points: Vec3[], options: CableGuardOptions): GuardBox[]; //# sourceMappingURL=cable-guard.d.ts.map