import { type NodeDefinition } from '@pascal-app/core'; import { BoxVentNode } from './schema.js'; /** * Box vent — a small louvered ventilation box that sits on a roof * slope. Parented to a `roof-segment`; position is segment-local; * rotation rotates the vent around the segment's vertical axis after * the slope tilt is applied. * * Composition (three-checkbox model): * - **`renderer` (custom)** — the box-vent needs the parent segment's * position + rotation + slope geometry to position itself, and the * registry-era roof-segment renderer doesn't auto-nest children * (its mesh is filled by `RoofSystem`). The custom renderer reads * the segment from `useScene`, applies the transform stack, and * follows the segment's `useLiveTransforms` override during a * parent drag. * - **no `geometry`** — geometry is created inside the renderer via * the shared pure builder in `./geometry`. We could lift it to * `def.geometry` once roof-segment migrates to the parametric path * (Phase 5 Stage B); for now keeping it inside the renderer * matches the legacy mount semantics one-for-one. * - **no `system`** — no animations, no cross-kind cascades. * * The bespoke move flow (segment-hopping with hit-tests against every * sibling roof-segment) ports later as `affordanceTools.move`. The * placement `def.tool` listens to `roof:*` events and creates a new * vent on click. */ export declare const boxVentDefinition: NodeDefinition; //# sourceMappingURL=definition.d.ts.map