import { BaseTool } from '@cornerstonejs/tools';
import type { Types as coreTypes } from '@cornerstonejs/core';
import type { Types as toolsTypes } from '@cornerstonejs/tools';
/**
 * @description
 * @author jiannan.jiao
 * @date 12/12/2023
 * @export
 * @class ContourDeleteTool
 * @extends {BaseTool}
 */
export default class ContourDeleteTool extends BaseTool {
    static toolName: string;
    /** @description 用于对Shape进行scaleUp的参数 */
    static SCALE_FACTOR: number;
    /** @description actived体积颜色 */
    private color;
    /** @description 待删除轮廓在shape中的下标 */
    private delIndex;
    /** @description 鼠标停留视口DIV */
    private hoverElement;
    /** @description 视口方向上的全部轮廓2D数据(world坐标系), 仅包含视口XY方向上的world坐标 */
    private pathsWorld2D;
    /** @description 视口方向上的全部轮廓3D数据(world坐标系) */
    private pathsWorld3D;
    /** @description 鼠标点坐标(world坐标系) */
    private mousePt;
    /** @description 轮廓上距离鼠标最近点坐标(world坐标系) */
    private nearestPt;
    /** @description 保存视口DIV上绑定的切层时新图像加载事件监听 */
    private newImageHandlers;
    /** @description 保存视口DIV上绑定的mouseleave事件监听 */
    private mouseleaveHandlers;
    constructor(toolProps?: toolsTypes.PublicToolProps, defaultToolProps?: toolsTypes.ToolProps);
    onSetToolDisabled(): void;
    /**
     * @description mouseWheelCallback会在customeCallbackHandler中被调用，多个工具监听时仅第一个会被触发(一般情况下StackScrollMouseWheelTool工具会占用改事件)
     *              这里添加视口对图层变换的监听, 切换图层后清空临近轮廓数据
     * @author jiannan.jiao
     * @date 12/12/2023
     * @private
     * @param {HTMLDivElement} element
     * @memberof ContourDeleteTool
     */
    private bindNewImage;
    /**
     * @description 绑定mouseleave监听, 鼠标移出时清除鼠标至轮廓上的连线
     * @author jiannan.jiao
     * @date 14/12/2023
     * @private
     * @param {HTMLDivElement} element
     * @memberof ContourDeleteTool
     */
    private bindMouseleave;
    /**
     * @description
     * @author jiannan.jiao
     * @date 12/12/2023
     * @param {toolsTypes.EventTypes.MouseMoveEventType} evt
     * @memberof ContourDeleteTool
     */
    mouseMoveCallback(evt: toolsTypes.EventTypes.MouseMoveEventType): void;
    /**
     * @description 鼠标按下时如果存在临近轮廓, 将轮廓区域填充为0
     * @author jiannan.jiao
     * @date 13/12/2023
     * @param {toolsTypes.EventTypes.MouseDownEventType} evt
     * @returns {*}
     * @memberof ContourDeleteTool
     */
    preMouseDownCallback(evt: toolsTypes.EventTypes.MouseDownEventType): true | undefined;
    /**
     * @description 将待删除轮廓路径外接矩形范围内的voxel填充为0
     *              再将外接矩形范围内属于其他轮廓的voxel重新填充
     * @author jiannan.jiao
     * @date 14/12/2023
     * @param {coreTypes.IImageVolume} volume
     * @param {string} segmentationId
     * @param {number} segmentIndex
     * @memberof ContourDeleteTool
     */
    modifySegmentationFill(volume: coreTypes.IImageVolume, segmentationId: string, segmentIndex: number): void;
    /**
     * @description 获取当前层segmentation的勾画轮廓(world坐标系)
     * @author jiannan.jiao
     * @date 12/12/2023
     * @param {coreTypes.IViewport} viewport
     * @param {string} segmentationId
     * @returns {*}
     * @memberof ContourDeleteTool
     */
    getSliceContourPaths(viewport: coreTypes.IViewport, segmentationId: string): {
        paths2D: coreTypes.Point2[][];
        paths3D: coreTypes.Point3[][];
        xyzIndex: number[];
    };
    /**
     * @description 获取paths中距离point的最近点并设置到鼠标与轮廓连线的渲染依赖中
     * @author jiannan.jiao
     * @date 14/12/2023
     * @param {HTMLDivElement} element
     * @param {coreTypes.Point2[][]} paths
     * @param {(coreTypes.Point3 | null)} point
     * @param {number[]} xyzIndex
     * @memberof ContourDeleteTool
     */
    setRenderReference(element: HTMLDivElement, paths: coreTypes.Point2[][], //world
    point: coreTypes.Point3 | null, xyzIndex: number[]): void;
    /**
     * @description
     * @author jiannan.jiao
     * @date 12/12/2023
     * @param {coreTypes.IEnabledElement} enabledElement
     * @param {toolsTypes.SVGDrawingHelper} svgDrawingHelper
     * @memberof ContourDeleteTool
     */
    renderAnnotation(enabledElement: coreTypes.IEnabledElement, svgDrawingHelper: toolsTypes.SVGDrawingHelper): void;
}
