import type { ICamera, Point3, ReferenceCompatibleOptions, ViewReference, ViewReferenceSpecifier } from '../../../types/index.js';
import type { PlaneRestriction } from '../../../types/IViewport.js';
import { type GenericViewportReferenceContext } from '../genericViewportReferenceCompatibility.js';
import type { LoadedData } from '../ViewportArchitectureTypes.js';
import type { PlanarRendering } from './planarRuntimeTypes.js';
import type { PlanarDataBinding } from './PlanarMountedData.js';
import type { PlanarPayload, PlanarViewportRenderContext, PlanarViewState } from './PlanarViewportTypes.js';
export type PlanarReferenceContext = {
    dataId: string;
    data: LoadedData<PlanarPayload>;
    frameOfReferenceUID: string;
    rendering: PlanarRendering;
};
type PlanarResolvedViewLike = {
    getFrameOfReferenceUID(): string;
    toICamera(): ICamera<unknown>;
};
export type PlanarViewReferenceHost = {
    viewportId: string;
    viewportType: string;
    getActiveDataId(): string | undefined;
    getBinding(dataId: string): PlanarDataBinding | undefined;
    getBindings(): Iterable<[string, PlanarDataBinding]>;
    getCurrentBinding(): PlanarDataBinding | undefined;
    getRenderContext(): PlanarViewportRenderContext;
    getResolvedView(args?: {
        frameOfReferenceUID?: string;
        sliceIndex?: number;
    }): PlanarResolvedViewLike | undefined;
    getViewState(): PlanarViewState;
    getVolumeSliceWorldPointForImageIdIndex(imageIdIndex: number): Point3 | undefined;
    promoteSourceDataId(dataId: string): void;
    render(): void;
    setImageIdIndex(imageIdIndex: number): Promise<string>;
    setViewState(viewStatePatch: Partial<PlanarViewState>): void;
    updateBindingsCameraState(): void;
};
declare class PlanarViewReferenceController {
    private readonly host;
    constructor(host: PlanarViewReferenceHost);
    getVolumeId(viewRefSpecifier?: ViewReferenceSpecifier): string | undefined;
    getCurrentImageId(viewRefSpecifier?: ViewReferenceSpecifier): string | undefined;
    getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
    getViewReferenceId(viewRefSpecifier?: ViewReferenceSpecifier): string;
    setViewReference(viewRef: ViewReference): void;
    getFrameOfReferenceUID(): string;
    resolveFrameOfReferenceUID(): string;
    isPlaneViewable(planeRestriction: PlaneRestriction, options?: ReferenceCompatibleOptions): boolean;
    getReferenceViewContexts(fallbackContexts: GenericViewportReferenceContext[]): GenericViewportReferenceContext[];
    getPlanarReferenceContext(viewRefSpecifier?: ViewReferenceSpecifier): PlanarReferenceContext | undefined;
    private getCurrentPlanarReferenceContext;
    private getPlanarReferenceContextByDataId;
    private getAllPlanarReferenceContexts;
    private getGenericViewportReferenceContext;
    private findPlanarReferenceContextByVolumeId;
    private findPlanarReferenceContextByImageReference;
    private resolveViewReferenceContext;
    private activatePlanarReferenceContext;
    private applyViewReferenceToCurrentBinding;
    private applyImageViewReference;
    private applyVolumeViewReference;
    private normalizeVolumeViewReference;
    private deriveOrientationFromPlaneRestriction;
    private isPlaneRestrictionCompatibleWithNormal;
    private resolveVolumeReferenceSliceTarget;
    private toVolumeSliceTarget;
    private getImageIdsForReferenceContext;
    private findImageIdIndexByReference;
    private getCurrentPlanarRendering;
    private areNormalsEqual;
    private areNormalsOpposite;
}
export default PlanarViewReferenceController;
