import { InputFlowControl } from "./interface";
import { Point } from "../util/misc";
import { ObservableBoardCamera } from "../board-camera";
import { PanControlStateMachine } from "./pan-control-state-machine";
import { ZoomControlStateMachine } from "./zoom-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 FlowControlWithAnimationAndLockInput implements InputFlowControl {
    private _panStateMachine;
    private _zoomStateMachine;
    constructor(panStateMachine: PanControlStateMachine, zoomStateMachine: ZoomControlStateMachine);
    notifyPanToAnimationInput(target: Point): void;
    notifyPanInput(delta: Point): void;
    notifyZoomInput(delta: number, at: Point): void;
    notifyZoomInputAnimation(targetZoom: number, at?: Point): void;
    notifyZoomInputAnimationWorld(targetZoom: number, at?: Point): void;
    notifyRotationInput(delta: number): void;
    initatePanTransition(): void;
    initateZoomTransition(): void;
}
/**
 * @description Create a flow control that allows animation and lock inputs.
 *
 * @category Input Flow Control
 */
export declare function createFlowControlWithAnimationAndLock(camera: ObservableBoardCamera): InputFlowControl;
/**
 * @description Create a default flow control with a camera rig.
 *
 * @category Input Flow Control
 */
export declare function createFlowControlWithAnimationAndLockWithCameraRig(cameraRig: CameraRig): InputFlowControl;
