import { type WallNode } from '@pascal-app/core'; import { type Camera, type Material, Matrix4, type Mesh, Vector3 } from 'three'; import useViewer, { type WallMode } from '../../store/use-viewer'; import { type WallMaterialVariant } from './wall-material-variant'; export declare function sameMaterialArray(a: Material | Material[], b: Material[]): boolean; type Variant = { key: WallMaterialVariant; materials: Material[]; }; type CachedWall = { mesh: Mesh; node: WallNode; normal: Vector3; matrix: Matrix4; geometry: Mesh['geometry']; negativeFacing: boolean | undefined; hidden: boolean | undefined; variantKey: WallMaterialVariant | undefined; assignedMaterials: Material | Material[] | undefined; visibleVariant: Variant; hiddenVariant: Variant; }; export declare const WALL_FACING_HYSTERESIS = 0.001; export declare function wallHiddenFromFacing(node: Pick, mode: WallMode, negativeFacing: boolean): boolean; export declare function wallFacingNegative(dot: number, previous: boolean | undefined): boolean; export type WallCutoutViewerState = Pick, 'wallMode' | 'shading' | 'textures' | 'colorPreset' | 'sceneTheme' | 'selection' | 'previewSelectedIds' | 'hoveredId' | 'hoverHighlightMode'>; export type WallCutoutViewerStore = { getState: () => WallCutoutViewerState; }; export declare class WallCutoutCache { private readonly viewerStore; readonly walls: Map; readonly rebuilt: Set; private viewer; private nodes; private materials; private registryRevision; private wallCount; private libraryVersion; private lastCameraPosition; private lastCameraTarget; private cameraDirection; private cameraTarget; private lastUpdateTime; private textureVersion; private selected; private highlightKey; private transformed; constructor(viewerStore?: WallCutoutViewerStore); subscribeLiveTransforms(): () => void; update(camera: Camera, time: number): void; private refreshAppearance; private refreshNormal; private apply; } export {}; //# sourceMappingURL=wall-cutout-cache.d.ts.map