import { ReactiveController, ReactiveControllerHost } from 'lit';
import { Subscription } from 'xstate';
import { SelectorController } from 'xstate-lit';
import { View2dActor } from '@itk-viewer/viewer/view-2d.js';
import { View3dActor } from '@itk-viewer/viewer/view-3d.js';
import { AxisType } from '@itk-viewer/viewer/slice-utils.js';
import { TransferFunctionEditor } from '@itk-viewer/transfer-function-editor/TransferFunctionEditor.js';
import { ColorTransferFunction } from '@itk-viewer/transfer-function-editor/ColorTransferFunction.js';
import { Image, ImageSnapshot } from '@itk-viewer/viewer/image.js';
import { View2dVtkjs } from '@itk-viewer/vtkjs/view-2d-vtkjs.machine.js';
import { View3dVtkjs } from '@itk-viewer/vtkjs/view-3d-vtkjs.machine.js';
export type ViewActor = View2dActor | View3dActor;
export type RenderingActor = View3dVtkjs | View2dVtkjs;
type ViewSnapshot = ReturnType<ViewActor['getSnapshot']>;
export declare class ViewControls implements ReactiveController {
    host: ReactiveControllerHost;
    actor: ViewActor | undefined;
    viewSubscription: Subscription | undefined;
    imageSubscription: Subscription | undefined;
    imageActor: Image | undefined;
    renderer: RenderingActor | undefined;
    rendererSubscription: Subscription | undefined;
    scale: SelectorController<View2dActor, number> | undefined;
    scaleCount: SelectorController<View2dActor, number> | undefined;
    slice: SelectorController<View2dActor, number> | undefined;
    axis: SelectorController<View2dActor, AxisType> | undefined;
    imageDimension: SelectorController<View2dActor, number> | undefined;
    colorMapsOptions: SelectorController<RenderingActor, Record<string, string>> | undefined;
    colorMaps: SelectorController<Image, string[]> | undefined;
    componentCount: SelectorController<Image, number> | undefined;
    selectedComponent: number;
    transferFunctionEditor: TransferFunctionEditor | undefined;
    view: '2d' | '3d';
    colorTransferFunctions: Map<number, ColorTransferFunction>;
    constructor(host: ReactiveControllerHost);
    hostConnected(): void;
    setActor(actor: ViewActor): void;
    onSlice: (event: Event) => void;
    onAxis: (event: Event) => void;
    onScale: (event: Event) => void;
    onSelectedComponent: (component: number) => void;
    onColorMap: (colorMap: string) => void;
    setTransferFunctionContainer: (container: Element | undefined) => void;
    onViewSnapshot: (snapshot: ViewSnapshot) => void;
    onImageActorSnapshot: (snapshot: ImageSnapshot) => void;
    setView: (view: "2d" | "3d") => void;
    updateTransferFunctionEditor: () => void;
    updateColorTransferFunction: () => void;
    onColorTransferFunction: ({ colorTransferFunction, component, }: {
        colorTransferFunction: ColorTransferFunction;
        component: number;
    }) => void;
}
export {};
//# sourceMappingURL=view-controls-controller.d.ts.map