import { type AnyNode, type CabinetModuleNode } from '@pascal-app/core'; /** Conservative opening envelopes: warnings, not a collision veto. */ export declare function cabinetOpeningFootprints(node: CabinetModuleNode, position: [number, number, number], yaw: number): { position: [number, number, number]; dimensions: [number, number, number]; rotation: [number, number, number]; }[]; export type OpeningFootprint = ReturnType[number]; export declare function openingFootprintsOverlap(a: OpeningFootprint, b: OpeningFootprint): boolean; /** Something a cabinet's openings can run into, with the ids of it and its ancestors. */ export type ClearanceObstacle = { id: string; chain: ReadonlySet; footprints: OpeningFootprint[]; }; /** * What openings on a level can run into: its visible straight walls and colliding floor-placed * objects. One pass over the scene, shared by every module a check reads. */ export declare function cabinetOpeningObstacles(levelId: string, nodes: Readonly>): ClearanceObstacle[]; export declare function cabinetOpeningConflicts(node: CabinetModuleNode, position: [number, number, number], yaw: number, levelId: string, nodes: Readonly>, ignoreIds?: readonly string[], obstacles?: () => readonly ClearanceObstacle[]): string[]; //# sourceMappingURL=opening-clearance.d.ts.map