/** @internal NOTE: Internal APIs. Subject to change. Use of these APIs in production applications is not supported. */ /** */
import { Observable, TargetCamera } from '../../loader/babylonjs-import';
import { ICameraInput } from '../../loader/babylonjs-import';
import { CameraOptions } from '../ViewerCamera';
/**
 * Manage the mouse inputs to control the movement of a PivotTargetCamera.
 * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
 */
export declare class TwinfinityTargetCameraMouseRotationInput implements ICameraInput<TargetCamera> {
    private readonly _cameraOptions;
    private _isRotating;
    private _pointerEvent?;
    private _srcElement?;
    private _onBeginFrameObserver;
    /**
     * Holds the last observed mouse position in screen space pixels.
     * This position is used to calculate the delta movement of mouse pointer.
     */
    private _previousScreenCoordinate?;
    /**
     * This variable contains the Observable
     */
    private _onPointerObserver;
    /**
     * Defines the camera the input is attached to.
     */
    camera: TargetCamera;
    /**
     * Defines the buttons associated with the input to handle camera move.
     * Left mouse button is used as default for Rotation.
     *  0: No button or un-initialized
     *  1: Primary button (usually the left button)
     *  2: Secondary button (usually the right button)
     *  4: Auxiliary button (usually the mouse wheel button or middle button)
     *  8: 4th button (typically the "Browser Back" button)
     * 16 : 5th button (typically the "Browser Forward" button)
     * A button number can represent multiple buttons. For example button left and right is represented by 1 + 2 = 3.
     */
    buttons: number[];
    /**
     * Observable for when a pointer move event occurs containing the move offset
     */
    onPointerMovedObservable: Observable<{
        offsetX: number;
        offsetY: number;
    }>;
    private _buttonThatStartedRotation;
    /**
     * Manages the mouse inputs to control the movement of a PivotTargetCamera.
     * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
     */
    constructor(_cameraOptions: CameraOptions);
    /**
     * Checks if user is rotating the camera.
     */
    get isRotating(): boolean;
    /**
     * Attaches the input controls to a specific dom element to get the input from.
     * @param noPreventDefault Defines whether event caught by the controls should call preventdefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)
     */
    attachControl(noPreventDefault?: boolean): void;
    /**
     * Is called by JS contextmenu event.
     * Override this method to provide functionality.
     */
    protected onContextMenu(evt: PointerEvent): void;
    /**
     * Detaches the current controls from the specified DOM element.
     */
    detachControl(): void;
    /**
     * Gets the class name of the current input.
     * @returns the class name
     */
    getClassName(): string;
    /**
     * Gets the friendly name associated with the input class.
     * @returns the input friendly name
     */
    getSimpleName(): string;
    /**
     * This function is run every time onPointerObservable fires
     */
    private onPointerInput;
    private onRotateStart;
    private onRotate;
    private onEndRotate;
}
//# sourceMappingURL=TwinfinityTargetCameraMouseRotationInput.d.ts.map