import { mat4 } from 'gl-matrix';
import type vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
import type vtkVolumeMapper from '@kitware/vtk.js/Rendering/Core/VolumeMapper';
import type { ICamera, Point2, Point3 } from '../../../types/index.js';
import type { PlanarViewState, PlanarResolvedICamera } from './PlanarViewportTypes.js';
import type { PlanarSliceBasis } from './planarSliceBasis.js';
export interface DerivedPlanarPresentation {
    pan: Point2;
    zoom: number;
    scale: Point2;
    rotation: number;
    flipHorizontal: boolean;
    flipVertical: boolean;
}
export declare function projectAnchorWorldToCurrentPlane(anchorWorld: Point3, planePoint: Point3, planeNormal: Point3): Point3;
export declare function derivePlanarPresentation(args: {
    sliceBasis: PlanarSliceBasis;
    camera?: PlanarViewState;
    canvasWidth: number;
    canvasHeight: number;
}): DerivedPlanarPresentation;
export declare function resolvePlanarICamera(args: {
    sliceBasis: PlanarSliceBasis;
    camera?: PlanarViewState;
    canvasWidth: number;
    canvasHeight: number;
}): PlanarResolvedICamera;
export declare function applyPlanarICameraToRenderer(args: {
    renderer: vtkRenderer;
    activeSourceICamera?: PlanarResolvedICamera;
}): PlanarResolvedICamera | undefined;
type PlanarScalableActor = {
    setUserMatrix?: (matrix: mat4) => void;
};
export declare function createPlanarPresentationScaleMatrix(activeSourceICamera?: Pick<PlanarResolvedICamera, 'focalPoint' | 'presentationScale' | 'viewPlaneNormal' | 'viewUp'>): mat4;
export declare function applyPlanarICameraToActor(args: {
    actor?: PlanarScalableActor;
    activeSourceICamera?: PlanarResolvedICamera;
}): void;
export declare function setPlanarVolumeCameraClippingRange(renderer: vtkRenderer): void;
export declare function updatePlanarVolumeClippingPlanes(args: {
    camera: Pick<ICamera, 'focalPoint' | 'viewPlaneNormal'>;
    mapper: vtkVolumeMapper;
    slabThickness?: number;
}): void;
export {};
