import { BufferGeometry, Mesh, Plane } from "three";
import type { ClippingUtils } from "./ClippingUtils";
type CapPreselection = {
    elementID: number;
    modelID: number;
} | null;
export declare class ClippingCaps {
    active: boolean;
    readonly plane: Plane;
    private readonly capMaterial;
    private readonly capMesh;
    private readonly capTexture;
    private readonly context;
    private readonly root;
    private readonly box;
    private readonly meshBox;
    private readonly inverseMatrix;
    private readonly localPlane;
    private readonly tempLine;
    private readonly tempVector;
    private readonly tempVector1;
    private readonly tempAxisX;
    private readonly tempAxisY;
    private readonly tempAxisZ;
    private readonly worldPoint;
    private capClippingPlanesKey;
    private capShader;
    private closeGapTolerance;
    private preselection;
    private tolerance;
    constructor(context: ClippingUtils, plane: Plane);
    private createCapMaterial;
    dispose(): void;
    setVisible(visible: boolean): void;
    syncMeshes(): void;
    getSelectableObject(): Mesh<BufferGeometry<import("three").NormalBufferAttributes, import("three").BufferGeometryEventMap>, import("three").Material<import("three").MaterialEventMap> | import("three").Material<import("three").MaterialEventMap>[], import("three").Object3DEventMap>;
    setPreselection(preselection: CapPreselection): void;
    updateVisualState(): void;
    update(): void;
    private setupWebGpuCapMaterial;
    private setupCapMaterialShader;
    private updateColorUniform;
    private updateColorUniforms;
    private updatePreselectionUniforms;
    private updateCapMaterial;
    private createCapGeometry;
    private getCapSegmentsFromEdgeSegments;
    private getCapSegments;
    private getTriangleElementID;
    private getTriangleIntersections;
    private getPlanePoint;
    private getClosedContours;
    private getElementClosedContours;
    private walkContour;
    private getNextContourKey;
    private cleanContour;
    private triangulateContours;
    private pushContourVertex;
    private getHatchSpacing;
    private getModelHatchReferenceDirection;
    private getModelWorldBox;
}
export {};
