import type ICamera from '../../types/ICamera.js';
import type { Point2, Point3, ViewportContentMode } from '../../types/index.js';
import ViewportStatus from '../../enums/ViewportStatus.js';
import type { IRenderingEngine } from '../../types/index.js';
import type { BaseViewportRenderContext, BindingRole, DataAddOptions, DisplaySetId, DataProvider, LoadedData, ViewportDataBinding, RenderPathResolver, ViewportController, ViewportId } from './ViewportArchitectureTypes.js';
import type ViewportType from '../../enums/ViewportType.js';
import type ResolvedViewportView from './ResolvedViewportView.js';
import type { ReferenceCompatibleOptions, ViewReference, ViewReferenceSpecifier, RenderingEngineResizeOptions } from '../../types/IViewport.js';
import { type GenericViewportReferenceContext } from './genericViewportReferenceCompatibility.js';
declare abstract class GenericViewport<TViewState extends object, TDataPresentation = unknown, TContext extends BaseViewportRenderContext = BaseViewportRenderContext> implements ViewportController<TViewState, TDataPresentation> {
    readonly id: ViewportId;
    readonly element: HTMLDivElement;
    abstract readonly type: ViewportType;
    abstract readonly renderingEngineId: string;
    viewportStatus: ViewportStatus;
    protected dataProvider: DataProvider;
    protected renderPathResolver: RenderPathResolver;
    protected renderContext: TContext;
    protected bindings: Map<string, ViewportDataBinding<TDataPresentation>>;
    protected dataPresentation: Map<string, TDataPresentation>;
    protected viewState: TViewState;
    protected isDestroyed: boolean;
    readonly _debug: {
        renderModes: Record<string, string>;
    };
    constructor(args: {
        id: ViewportId;
        element: HTMLDivElement;
    });
    setDisplaySets(...entries: Array<{
        displaySetId: DisplaySetId;
        options?: unknown;
    }>): Promise<void>;
    addDisplaySet(displaySetId: DisplaySetId, options: DataAddOptions): Promise<void>;
    getDisplaySets(): Array<{
        displaySetId: DisplaySetId;
        options?: unknown;
    }>;
    removeData(displaySetId: DisplaySetId): void;
    setDisplaySetPresentation(props: Partial<TDataPresentation>): void;
    setDisplaySetPresentation(displaySetId: DisplaySetId, props: Partial<TDataPresentation>): void;
    getDisplaySetPresentation(displaySetId: DisplaySetId): TDataPresentation | undefined;
    getCurrentMode(): ViewportContentMode;
    getViewReference(_specifier?: ViewReferenceSpecifier): ViewReference;
    getViewReferenceId(_specifier?: ViewReferenceSpecifier): string;
    setViewReference(_viewReference: ViewReference): void;
    isReferenceViewable(viewReference: ViewReference, options?: ReferenceCompatibleOptions): boolean;
    getFrameOfReferenceUID(): string;
    getRenderingEngine(): IRenderingEngine;
    abstract getResolvedView(): ResolvedViewportView<unknown, ICamera<unknown>> | undefined;
    canvasToWorld(canvasPos: Point2): Point3;
    worldToCanvas(worldPos: Point3): Point2;
    getAspectRatio(): Point2;
    setViewState(viewStatePatch: Partial<TViewState>): void;
    getViewState(): TViewState;
    updateViewState(updater: Partial<TViewState> | ((viewState: TViewState) => Partial<TViewState> | void)): void;
    removeWidgets(): void;
    destroy(): void;
    dispose(): void;
    setRendered(): void;
    setNeedsRender(): void;
    abstract render(): void;
    updateRenderingPipeline(): void;
    resize(): void;
    resetViewState(_options?: unknown): boolean;
    resizeForRenderingEngine({ keepCamera, }?: RenderingEngineResizeOptions): void;
    protected addLoadedData(displaySetId: DisplaySetId, data: LoadedData, options: DataAddOptions, shouldIgnore?: () => boolean): Promise<boolean>;
    protected removeAllData(): void;
    protected setDataPresentationState(displaySetId: DisplaySetId, props: TDataPresentation): void;
    protected getDataPresentationState(displaySetId: DisplaySetId): TDataPresentation | undefined;
    protected setDefaultDataPresentation(displaySetId: DisplaySetId, defaults: TDataPresentation): TDataPresentation;
    protected mergeDataPresentation(displaySetId: DisplaySetId, props: Partial<TDataPresentation>): TDataPresentation;
    protected notifyDataPresentationModified(_displaySetId: DisplaySetId, _props: Partial<TDataPresentation>): void;
    protected normalizeViewState(viewState: TViewState): TViewState;
    protected modified(previousCamera?: ICamera): void;
    protected getCameraForEvent(): ICamera;
    protected triggerCameraModifiedEvent(previousCamera: ICamera): void;
    protected triggerCameraResetEvent(): void;
    protected getBinding(displaySetId: DisplaySetId): ViewportDataBinding<TDataPresentation> | undefined;
    protected getDisplaySetRenderMode(displaySetId: DisplaySetId): string | undefined;
    protected getDisplaySetRole(displaySetId: DisplaySetId): BindingRole | undefined;
    protected getFirstBinding(): ViewportDataBinding<TDataPresentation> | undefined;
    protected getSourceBinding(): ViewportDataBinding<TDataPresentation> | undefined;
    protected getCurrentBinding(): ViewportDataBinding<TDataPresentation> | undefined;
    protected forEachBinding(visitor: (binding: ViewportDataBinding<TDataPresentation>) => void): void;
    protected getReferenceViewContexts(_viewReference?: ViewReference): GenericViewportReferenceContext[];
    protected renderBindings(): boolean;
    protected resizeBindings(): void;
    protected destroyBindings(): void;
    protected onDestroy(): void;
}
export default GenericViewport;
