import { Observable } from 'rxjs';
export declare class ObjectControls {
    private isUserInteracting;
    private restoringAnimationOngoing;
    private restoringOriginPosTimeout;
    private startDraggingPosition;
    private rendererDom;
    private touchArea;
    private obj;
    private userInteracted;
    private userInteractedSubject;
    rotationSpeed: number;
    verticalRotation: boolean;
    horizontalRotation: boolean;
    autoRotationY: boolean;
    autoRotationX: boolean;
    autoRotationZ: boolean;
    restoreOriginPosition: boolean;
    autoRotationSpeed: number;
    userInteracted$: Observable<boolean>;
    controlsEnabled: boolean;
    constructor(rendererDom: HTMLElement, object: THREE.Mesh | THREE.Group, touchArea?: HTMLElement);
    /**
     * Method, which needs to be called, in case autorotation is used
     */
    update(): void;
    /**
     * Removes the event listners
     */
    removeEventlisteners(): void;
    resetUserInteractionFlag(): void;
    /**
     * Adds the event listeners
     */
    private addEventlisteners;
    /**
     * Reset the mouse position to x=0 and y=0
     */
    private resetMousePosition;
    /******************  MOUSE interaction functions - desktop  *****/
    /**
     * Prepares everything, when the mouse is clicked
     * @param e mouse event
     */
    private mouseDown;
    /**
     * Calculates the x and y rotation of the object depending on the mouse movement
     * @param e MouseEvent
     */
    private mouseMove;
    private mouseUp;
    /****************** TOUCH interaction functions - mobile  *****/
    private onTouchStart;
    private onTouchMove;
    private onTouchEnd;
    /**
     * Rotates the object to the position 0,0,0 after a some timeout
     */
    private restoreOriginalPosition;
}
