import type { Point2, Point3 } from '../../../types/index.js';
import { resolvePlanarStackImageIdIndex, resolvePlanarViewportView, type PlanarViewResolutionRenderContext } from './PlanarResolvedView.js';
import type { DerivedPlanarPresentation } from './planarRenderCamera.js';
import type { PlanarActiveViewRuntime, PlanarPayload, PlanarResolvedICamera, PlanarViewState } from './PlanarViewportTypes.js';
import type { PlanarRendering } from './planarRuntimeTypes.js';
type PlanarRenderPathProjectionContext = PlanarViewResolutionRenderContext & {
    viewport: {
        isCurrentDataId(dataId: string): boolean;
    };
    view: PlanarActiveViewRuntime;
};
type PlanarProjectionResolvedView = NonNullable<ReturnType<typeof resolvePlanarViewportView>>;
export type PlanarRenderPathProjectionCamera = PlanarResolvedICamera & Required<Pick<PlanarResolvedICamera, 'focalPoint' | 'parallelScale' | 'viewPlaneNormal' | 'viewUp'>>;
export interface PlanarRenderPathProjection {
    activeSourceICamera: PlanarResolvedICamera;
    currentImageIdIndex: number;
    isSourceBinding: boolean;
    maxImageIdIndex: number;
    presentation: DerivedPlanarPresentation;
    resolvedICamera: PlanarResolvedICamera;
    resolvedView: PlanarProjectionResolvedView;
}
export { resolvePlanarStackImageIdIndex };
export declare function resolvePlanarRenderPathCurrentImageIdIndex(args: {
    projection?: PlanarRenderPathProjection;
    rendering: Pick<PlanarRendering, 'currentImageIdIndex' | 'renderMode'>;
    viewState?: PlanarViewState;
}): number;
export declare function getPlanarRenderPathActiveSourceICamera(args: {
    view: PlanarActiveViewRuntime;
}): PlanarRenderPathProjectionCamera | undefined;
export declare function canvasToWorldPlanarRenderPathProjection(args: {
    canvas: HTMLCanvasElement;
    canvasPos: Point2;
    ctx: Pick<PlanarRenderPathProjectionContext, 'view'>;
}): Point3;
export declare function worldToCanvasPlanarRenderPathProjection(args: {
    canvas: HTMLCanvasElement;
    ctx: Pick<PlanarRenderPathProjectionContext, 'view'>;
    worldPos: Point3;
}): Point2;
export declare function resolvePlanarRenderPathProjection(args: {
    ctx: PlanarRenderPathProjectionContext;
    data?: PlanarPayload;
    dataId: string;
    frameOfReferenceUID?: string;
    imageIds?: string[];
    rendering: PlanarRendering;
    sliceIndex?: number;
    viewState?: PlanarViewState;
}): PlanarRenderPathProjection | undefined;
