import { type Types as coreTypes } from '@cornerstonejs/core';
import { AnnotationTool, type Types as toolsTypes } from '@cornerstonejs/tools';
type CircleAnnotation = {
    annotationUID: string;
    data: {
        handles: {
            points: coreTypes.Point3[];
        };
    };
    metadata: {
        viewPlaneNormal: coreTypes.Point3;
        viewUp: coreTypes.Point3;
    };
} & toolsTypes.Annotation;
/**
 * @description
 * @author jiannan.jiao
 * @date 19/10/2023
 * @class ManualRegistrationTool
 * @extends {AnnotationTool}
 */
declare class ManualRegistrationTool extends AnnotationTool {
    static toolName: string;
    private annotations;
    private activeAnnotation;
    private radians;
    private translation;
    private center;
    private volumeId;
    private watchStop;
    constructor(toolProps?: {}, defaultToolProps?: {
        supportedInteractionTypes: string[];
    });
    onSetToolActive(): void;
    private watchHandle;
    private cleanup;
    onSetToolDisabled: () => void;
    onSetToolEnabled: () => void;
    onSetToolPassive: () => void;
    /**
     * @description
     * @author jiannan.jiao
     * @date 19/10/2023
     * @memberof ManualRegistrationTool
     */
    private clearAnnotations;
    /**
     * @description AnnotationTool中已定义了mouseMoveCallback处理鼠标移动时annotation的高亮状态，此处不可在使用
     * mouseMoveCallback(arg: toolsTypes.EventTypes.MouseMoveEventType) {}
     */
    /**
     * @description 触发在postMouseDownCallback之前
     * 返回true不执行eventDispatchers/mouseEventHandlers/mouseDown.ts中对annotationTools的判断
     * preMouseDownCallback(arg: toolsTypes.EventTypes.MouseDownEventType) {}
     */
    /**
     * @description 触发在eventDispatchers/mouseEventHandlers/mouseDown.ts中对annotationTools的执行后
     * postMouseDownCallback(arg: toolsTypes.EventTypes.MouseDownEventType) {}
     */
    /**
     * @description 渲染控制环
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {coreTypes.IEnabledElement} enabledElement
     * @param {toolsTypes.SVGDrawingHelper} svgDrawingHelper
     * @memberof ManualRegistrationTool
     */
    renderAnnotation(enabledElement: coreTypes.IEnabledElement, svgDrawingHelper: toolsTypes.SVGDrawingHelper): void;
    /**
     * @description 创建控制环的Annotation
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {string} annotationUID
     * @param {coreTypes.IEnabledElement} enabledElement
     * @returns {*}
     * @memberof ManualRegistrationTool
     */
    createAnnotation(annotationUID: string, enabledElement: coreTypes.IEnabledElement): CircleAnnotation;
    /**
     * @description 绘制旋转控制环
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {coreTypes.IEnabledElement} enabledElement
     * @param {toolsTypes.SVGDrawingHelper} svgDrawingHelper
     * @param {toolsTypes.Annotation} _annotation
     * @memberof ManualRegistrationTool
     */
    private draw;
    /**
     * ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
     * ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
     * ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
     */
    /**
     * @description 由于继承AnnotationTool必须定义的抽象方法
     * @author jiannan.jiao
     * @date 19/10/2023
     * @memberof ManualRegistrationTool
     */
    addNewAnnotation: () => {
        metadata: {
            FrameOfReferenceUID: string;
            toolName: string;
        };
        data: {};
    };
    /**
     * @description 由于继承AnnotationTool必须定义的抽象方法
     * @author jiannan.jiao
     * @date 19/10/2023
     * @memberof ManualRegistrationTool
     */
    cancel(): void;
    /**
     * @description
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {HTMLDivElement} element
     * @param {toolsTypes.Annotation} _annotation
     * @param {coreTypes.Point2} canvasCoords
     * @param {number} proximity 记录接收到的参数，勿删
     * @returns {*}
     * @memberof ManualRegistrationTool
     */
    getHandleNearImagePoint(element: HTMLDivElement, _annotation: toolsTypes.Annotation, canvasCoords: coreTypes.Point2): coreTypes.Point3 | undefined;
    /**
     * @description 始终返回true使鼠标按下时能够使toolSelectedCallback响应
     * @author jiannan.jiao
     * @date 19/10/2023
     * @memberof ManualRegistrationTool
     */
    isPointNearTool: () => boolean;
    /**
     * @description
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {toolsTypes.EventTypes.InteractionEventType} evt
     * @param {toolsTypes.Annotation} annotation
     * @param {toolsTypes.ToolHandle} handle 记录接收到的参数，勿删
     * @param {toolsTypes.InteractionTypes} interactionType 记录接收到的参数，勿删
     * @memberof ManualRegistrationTool
     */
    handleSelectedCallback(evt: toolsTypes.EventTypes.InteractionEventType, annotation: toolsTypes.Annotation): void;
    /**
     * @description
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {toolsTypes.EventTypes.InteractionEventType} evt
     * @param {toolsTypes.Annotation} annotation
     * @param {toolsTypes.InteractionTypes} interactionType 记录接收到的参数，勿删
     * @memberof ManualRegistrationTool
     */
    toolSelectedCallback(evt: toolsTypes.EventTypes.InteractionEventType, annotation: toolsTypes.Annotation): void;
    /**
     * @description 鼠标按下后快速抬起触发
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {toolsTypes.EventTypes.MouseClickEventType} arg 记录接收到的参数，勿删
     * @memberof ManualRegistrationTool
     */
    mouseClickCallback(): void;
    /**
     * @description
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {toolsTypes.EventTypes.MouseUpEventType} arg 记录接收到的参数，勿删
     * @memberof ManualRegistrationTool
     */
    mouseUpCallback(): void;
    /**
     * @description
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {toolsTypes.EventTypes.MouseDragEventType} evt
     * @memberof ManualRegistrationTool
     */
    mouseDragCallback(evt: toolsTypes.EventTypes.MouseDragEventType): void;
    /**
     * @description 计算控制环上旋转控制点和原始点位间的夹角
     * @author jiannan.jiao
     * @date 23/10/2023
     * @private
     * @param {coreTypes.Point2} centreOnCanvas
     * @param {coreTypes.Point2} originOnCanvas
     * @param {toolsTypes.IPoints} lastPoints
     * @returns {*}
     * @memberof ManualRegistrationTool
     */
    private calRotateRadians;
    private calRotateContrlPosition;
    private updateOrientation;
    /**
     * @description 以平面Z轴为旋转轴旋转体积
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {toolsTypes.EventTypes.MouseDragEventType} evt
     * @memberof ManualRegistrationTool
     */
    private rotateVolume;
    /**
     * @description 在平面X/Y轴方向上移动体积
     * @author jiannan.jiao
     * @date 19/10/2023
     * @param {toolsTypes.EventTypes.MouseDragEventType} evt
     * @memberof ManualRegistrationTool
     */
    private moveVolume;
}
export default ManualRegistrationTool;
