import type { Types } from '@cornerstonejs/core';
import AnnotationDisplayTool from './AnnotationDisplayTool';
import type { Annotation, Annotations, EventTypes, ToolHandle, InteractionTypes, ToolProps, PublicToolProps } from '../../types';
import type { AnnotationStyle, StyleSpecifier } from '../../types/AnnotationStyle';
declare abstract class AnnotationTool extends AnnotationDisplayTool {
    protected eventDispatchDetail: {
        viewportId: string;
        renderingEngineId: string;
    };
    isDrawing: boolean;
    isHandleOutsideImage: boolean;
    editData: {
        annotation: Annotation;
        viewportIdsToRender?: string[];
        newAnnotation?: boolean;
        handleIndex?: number;
        movingTextBox?: boolean;
        hasMoved?: boolean;
    } | null;
    static createAnnotation(...annotationBaseData: any[]): Annotation;
    static createAnnotationForViewport<T extends Annotation>(viewport: any, ...annotationBaseData: any[]): T;
    static createAndAddAnnotation(viewport: any, ...annotationBaseData: any[]): void;
    static toolName: any;
    constructor(toolProps: PublicToolProps, defaultToolProps: ToolProps);
    abstract addNewAnnotation(evt: EventTypes.InteractionEventType, interactionType: InteractionTypes): Annotation;
    abstract cancel(element: HTMLDivElement): any;
    abstract handleSelectedCallback(evt: EventTypes.InteractionEventType, annotation: Annotation, handle: ToolHandle, interactionType: InteractionTypes): void;
    abstract toolSelectedCallback(evt: EventTypes.InteractionEventType, annotation: Annotation, interactionType: InteractionTypes, canvasCoords?: Types.Point2): void;
    abstract isPointNearTool(element: HTMLDivElement, annotation: Annotation, canvasCoords: Types.Point2, proximity: number, interactionType: string): boolean;
    mouseMoveCallback: (evt: EventTypes.MouseMoveEventType, filteredAnnotations?: Annotations) => boolean;
    getHandleNearImagePoint(element: HTMLDivElement, annotation: Annotation, canvasCoords: Types.Point2, proximity: number): ToolHandle | undefined;
    getLinkedTextBoxStyle(specifications: StyleSpecifier, annotation?: Annotation): Record<string, unknown>;
    static isSuvScaled(viewport: Types.IStackViewport | Types.IVolumeViewport, targetId: string, imageId?: string): boolean;
    isSuvScaled: typeof AnnotationTool.isSuvScaled;
    protected getAnnotationStyle(context: {
        annotation: Annotation;
        styleSpecifier: StyleSpecifier;
    }): AnnotationStyle;
    private _imagePointNearToolOrHandle;
    protected static createAnnotationState(annotation: Annotation, deleting?: boolean): {
        annotationUID: string;
        data: {
            [key: string]: unknown;
            handles?: import("../../types/AnnotationTypes").Handles;
            cachedStats?: Record<string, unknown>;
            label?: string;
        };
        deleting: boolean;
    };
    static createAnnotationMemo(element: any, annotation: Annotation, options?: {
        newAnnotation?: boolean;
        deleting?: boolean;
    }): {
        restoreMemo: () => void;
    };
    protected createMemo(element: any, annotation: any, options?: any): void;
}
export default AnnotationTool;
