import { CameraMux } from "../interface"; import { Point } from "../../utils/misc"; import { ObservableBoardCamera } from "../../board-camera"; import { PanControlStateMachine } from "./pan-control-state-machine"; import { ZoomControlStateMachine } from "./zoom-control-state-machine"; import { RotateControlStateMachine } from "./rotate-control-state-machine"; import { CameraRig } from "../../board-camera/camera-rig"; /** * @description The flow control with animation and lock input. * * This is a customized input flow control that suits a specific use case. * * You can use the default one ({@link SimpleRelayFlowControl}) instead or implement your own. * * The internal ruleset on which input is used and which is ignored is controlled by the state machines. * * @category Input Flow Control */ export declare class CameraMuxWithAnimationAndLock implements CameraMux { private _panStateMachine; private _zoomStateMachine; private _rotateStateMachine; constructor(panStateMachine: PanControlStateMachine, zoomStateMachine: ZoomControlStateMachine, rotateStateMachine: RotateControlStateMachine); notifyPanToAnimationInput(target: Point): void; notifyPanInput(delta: Point): void; notifyZoomInput(delta: number, at: Point): void; notifyRotateByInput(delta: number): void; notifyRotateToAnimationInput(target: number): void; notifyZoomInputAnimation(targetZoom: number, at?: Point): void; notifyZoomInputAnimationWorld(targetZoom: number, at?: Point): void; notifyRotationInput(delta: number): void; initatePanTransition(): void; initateZoomTransition(): void; initateRotateTransition(): void; get rotateStateMachine(): RotateControlStateMachine; get panStateMachine(): PanControlStateMachine; get zoomStateMachine(): ZoomControlStateMachine; } /** * @description Create a flow control that allows animation and lock inputs. * * @category Input Flow Control */ export declare function createCameraMuxWithAnimationAndLock(camera: ObservableBoardCamera): CameraMux; /** * @description Create a default flow control with a camera rig. * * @category Input Flow Control */ export declare function createCameraMuxWithAnimationAndLockWithCameraRig(cameraRig: CameraRig): CameraMux;