import type { Types } from '@cornerstonejs/core';
import { BaseTool } from '../base';
import type vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
import * as LabelmapMemo from '../../utilities/segmentation/createLabelmapMemo';
import type { LabelmapToolOperationData } from '../../types/LabelmapToolOperationData';
export type PreviewData = {
    preview: unknown;
    timer?: number;
    timerStart: number;
    startPoint: Types.Point2;
    element: HTMLDivElement;
    isDrag: boolean;
};
type EditDataReturnType = {
    volumeId: string;
    referencedVolumeId: string;
    segmentsLocked: number[];
} | {
    imageId: string;
    segmentsLocked: number[];
    override?: {
        voxelManager: Types.IVoxelManager<number> | Types.IVoxelManager<Types.RGB>;
        imageData: vtkImageData;
    };
} | null;
type ModifiedLabelmapToolOperationData = Omit<LabelmapToolOperationData, 'voxelManager' | 'override'> & {
    voxelManager?: Types.IVoxelManager<number> | Types.IVoxelManager<Types.RGB>;
    override?: {
        voxelManager: Types.IVoxelManager<number> | Types.IVoxelManager<Types.RGB>;
        imageData: vtkImageData;
    };
};
export default class LabelmapBaseTool extends BaseTool {
    protected _editData: {
        override: {
            voxelManager: Types.IVoxelManager<number>;
            imageData: vtkImageData;
        };
        segmentsLocked: number[];
        imageId?: string;
        imageIds?: string[];
        volumeId?: string;
        referencedVolumeId?: string;
    } | null;
    protected _hoverData?: {
        brushCursor: any;
        segmentationId: string;
        segmentIndex: number;
        segmentColor: [number, number, number, number];
        viewportIdsToRender: string[];
        centerCanvas?: Array<number>;
        viewport: Types.IViewport;
    };
    static previewData?: PreviewData;
    constructor(toolProps: any, defaultToolProps: any);
    protected get _previewData(): PreviewData;
    createMemo(segmentId: string, segmentationVoxelManager: any, preview: any): LabelmapMemo.LabelmapMemo;
    protected createEditData(element: any): EditDataReturnType;
    protected getEditData({ viewport, representationData, segmentsLocked, segmentationId, }: {
        viewport: any;
        representationData: any;
        segmentsLocked: any;
        segmentationId: any;
    }): EditDataReturnType;
    protected createHoverData(element: any, centerCanvas?: any): {
        brushCursor: {
            metadata: {
                viewPlaneNormal: Types.Point3;
                viewUp: Types.Point3;
                FrameOfReferenceUID: string;
                referencedImageId: string;
                toolName: string;
                segmentColor: Types.Color;
            };
            data: {};
        };
        centerCanvas: any;
        segmentIndex: number;
        viewport: Types.IStackViewport | import("@cornerstonejs/core").VolumeViewport;
        segmentationId: string;
        segmentColor: Types.Color;
        viewportIdsToRender: string[];
    };
    protected getActiveSegmentationData(viewport: any): {
        segmentIndex: number;
        segmentationId: string;
        segmentColor: Types.Color;
    };
    protected getOperationData(element?: any): ModifiedLabelmapToolOperationData;
    addPreview(element?: HTMLDivElement, options?: {
        acceptReject: boolean;
    }): unknown;
    rejectPreview(element?: HTMLDivElement): void;
    acceptPreview(element?: HTMLDivElement): void;
    static viewportContoursToLabelmap(viewport: Types.IViewport, options?: {
        removeContours: boolean;
    }): void;
}
export {};
