/** * One coherent deck post-and-rail guard laid out along a rail path, as oriented * boxes — the AWC Deck Construction Guide (DCA 6) guard in metres: a 4x4 post * at each end (and every bay ≤ 4 ft between), a flat 2x6 cap over them with a * 2x4 top rail on edge under it, a 2x4 bottom rail held off the nosing line, * and 1½ in square pickets between the rails at a gap under the 4 in sphere * (IRC R312.1.3). It shares the path sampling, corner finding and newel/picket * stations in `guard-path.ts` with the baluster guard, 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 guard; only the sections and * joinery differ from the balusters. Pure data — no Three.js, no React. * * `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 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 PostAndRailGuardOptions = { 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 deck guard's rails, bottom-to-top: a 2x4 bottom rail, a 2x4 top rail on * edge under the cap, and the flat 2x6 cap. Shared with the flight connector. */ export declare function postAndRailGuardRails(railHeight: number): GuardRail[]; export declare function buildPostAndRailGuard(points: Vec3[], options: PostAndRailGuardOptions): GuardBox[]; //# sourceMappingURL=post-and-rail-guard.d.ts.map