import type { mat4 } from 'gl-matrix';
import type { BlendModes, InterpolationType } from '../enums/index.js';
import { OrientationAxis } from '../enums/index.js';
import type { ActorEntry, FlipDirection, IImageData, IVolumeInput, OrientationVectors, Point2, Point3, VolumeViewportProperties, ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewReference, ICamera } from '../types/index.js';
import type { VoiModifiedEventDetail } from '../types/EventTypes.js';
import type { PlaneRestriction, ViewportInput } from '../types/IViewport.js';
import type { TransferFunctionNodes } from '../types/ITransferFunctionNode.js';
import Viewport from './Viewport.js';
import type vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
declare abstract class BaseVolumeViewport extends Viewport {
    useCPURendering: boolean;
    private _FrameOfReferenceUID;
    private sharpening;
    private smoothing;
    protected initialTransferFunctionNodes: TransferFunctionNodes;
    private globalDefaultProperties;
    private perVolumeIdDefaultProperties;
    protected initialViewUp: Point3;
    protected viewportProperties: VolumeViewportProperties;
    private volumeIds;
    constructor(props: ViewportInput);
    static get useCustomRenderingPipeline(): boolean;
    isOrientationChangeable(): boolean;
    getSliceViewInfo(): {
        width: number;
        height: number;
        sliceIndex: number;
        slicePlane: number;
        sliceToIndexMatrix: mat4;
        indexToSliceMatrix: mat4;
    };
    protected applyViewOrientation(orientation: OrientationAxis | OrientationVectors, resetCamera?: boolean, suppressEvents?: boolean): void;
    private initializeVolumeNewImageEventDispatcher;
    private setVOILUTFunction;
    private setColormap;
    private _applyColormapOpacity;
    private setOpacity;
    private setInvert;
    protected getVOIModifiedEventDetail(volumeId: string): VoiModifiedEventDetail;
    private _getOrCreateColorTransferFunction;
    protected setInterpolationType(interpolationType: InterpolationType, volumeId?: string): void;
    private setVOI;
    protected setRotation: (rotation: number) => void;
    private rotateCamera;
    setDefaultProperties(ViewportProperties: VolumeViewportProperties, volumeId?: string): void;
    clearDefaultProperties(volumeId?: string): void;
    getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
    isReferenceViewable(viewRef: ViewReference, options?: ReferenceCompatibleOptions): boolean;
    scroll(delta?: number): void;
    abstract isInAcquisitionPlane(): boolean;
    setBestOrentation(inPlaneVector1: Point3, inPlaneVector2: Point3): void;
    setViewPlane(planeRestriction: PlaneRestriction): void;
    setViewReference(viewRef: ViewReference): void;
    private setThreshold;
    setProperties({ voiRange, VOILUTFunction, invert, colormap, preset, interpolationType, slabThickness, sampleDistanceMultiplier, sharpening, smoothing, }?: VolumeViewportProperties, volumeId?: string, suppressEvents?: boolean): void;
    private setSharpening;
    private setSmoothing;
    protected shouldUseCustomRenderPass(): boolean;
    getRenderPasses: () => any[];
    protected _restoreVolumeRenderingDefaults(volumeActor: ActorEntry, volumeId: string): void;
    resetToDefaultProperties(volumeId: string): void;
    private setPreset;
    setSampleDistanceMultiplier(multiplier: number): void;
    getDefaultProperties: (volumeId?: string) => VolumeViewportProperties;
    getProperties: (volumeId?: string) => VolumeViewportProperties | undefined | null;
    private getColormap;
    setVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>;
    setDisplaySets(...entries: Array<{
        displaySetId: string;
        options?: unknown;
    }>): Promise<void>;
    addVolumes(volumeInputArray: IVolumeInput[], immediate?: boolean, suppressEvents?: boolean): Promise<void>;
    removeVolumeActors(actorUIDs: string[], immediate?: boolean): void;
    setOrientation(_orientation: OrientationAxis | OrientationVectors, _immediate?: boolean, _suppressEvents?: boolean): void;
    private initializeColorTransferFunction;
    private _getApplicableVolumeActor;
    private _isValidVolumeInputArray;
    getRotation: () => number;
    getBounds(): number[];
    flip(flipDirection: FlipDirection): void;
    getFrameOfReferenceUID: () => string;
    hasVolumeId(volumeId: string): boolean;
    hasVolumeURI(volumeURI: string): boolean;
    getImageData(volumeId?: string): IImageData | undefined;
    protected setCameraClippingRange(): void;
    getSliceIndex(): number;
    setCamera(cameraInterface: ICamera, storeAsInitialCamera?: boolean): void;
    private _setVolumeActors;
    canvasToWorldTiled: (canvasPos: Point2) => Point3;
    canvasToWorldContextPool: (canvasPos: Point2) => Point3;
    getVtkDisplayCoordsTiled: (canvasPos: Point2) => Point3;
    getVtkDisplayCoordsContextPool: (canvasPos: Point2) => Point3;
    worldToCanvasTiled: (worldPos: Point3) => Point2;
    worldToCanvasContextPool: (worldPos: Point3) => Point2;
    getRendererContextPool(): vtkRenderer;
    getRendererTiled(): vtkRenderer;
    hasImageURI: (imageURI: string) => boolean;
    protected _getViewUp(viewPlaneNormal: Point3): Point3;
    protected _getOrientationVectors(orientation: OrientationAxis | OrientationVectors): OrientationVectors;
    protected _getAcquisitionPlaneOrientation(): OrientationVectors;
    getSlabThickness(): number;
    getIntensityFromWorld(point: Point3): number;
    getImageIds: (volumeId?: string) => string[];
    abstract getCurrentImageId(): string | undefined;
    getVolumeId(specifier?: ViewReferenceSpecifier): string;
    getViewReferenceId(specifier?: ViewReferenceSpecifier): string;
    private _addVolumeId;
    abstract setBlendMode(blendMode: BlendModes, filterActorUIDs?: string[], immediate?: boolean): void;
    abstract setSlabThickness(slabThickness: number, filterActorUIDs?: string[]): void;
    abstract resetSlabThickness(): void;
    abstract resetProperties(volumeId?: string): void;
    getAllVolumeIds(): string[];
    private _configureRenderingPipeline;
    protected renderingPipelineFunctions: {
        worldToCanvas: {
            tiled: (worldPos: Point3) => Point2;
            contextPool: (worldPos: Point3) => Point2;
        };
        canvasToWorld: {
            tiled: (canvasPos: Point2) => Point3;
            contextPool: (canvasPos: Point2) => Point3;
        };
        getVtkDisplayCoords: {
            tiled: (canvasPos: Point2) => Point3;
            contextPool: (canvasPos: Point2) => Point3;
        };
        getRenderer: {
            tiled: () => vtkRenderer;
            contextPool: () => vtkRenderer;
        };
    };
}
export default BaseVolumeViewport;
