import { Camera3D } from '../../utils/3d/Camera3D';
import { DegreePerSecond, CameraRotationManagerParams, Degree, Vector3D } from '../../utils/3d/types';
/**
 * Класс управляющий вращением камеры
 */
export declare class CameraRotationManager {
    private options;
    private camera;
    private rotating;
    private fading;
    private lastTickTS;
    private lastCameraTurn;
    private lastCameraTurnTS;
    private fadeStartSpeed;
    private fadeCorrection;
    private fadeTime;
    rotationSpeed: Vector3D<DegreePerSecond>;
    constructor(camera: Camera3D, options: CameraRotationManagerParams);
    /**
     * Поворот камеры из текущего положения на заданное количество градусов
     */
    turnCamera(dx?: Degree, dy?: Degree, dz?: Degree): void;
    /**
     * Поворот камеры в заданное положение
     */
    pointCameraTo(x?: Degree, y?: Degree, z?: Degree): void;
    /**
     * Устанавливает угловые скорости по осям
     * Если скорость для оси не задана будет использована ее текущая скорость
     */
    setRotationSpeed(sx?: DegreePerSecond, sy?: DegreePerSecond, sz?: DegreePerSecond): void;
    /**
     * Start permanent rotation
     */
    startRotation(): void;
    /**
     * Выставляет нулевую скорость, что приводит к плавной остановке
     * при передаче поднятого флага останавливает движение мгновенно
     */
    stopRotation(immediate?: boolean): void;
    /**
     * "Толкает" камеру для плавного затухания при наличии остаточного "крутящего момента"
     */
    onCameraRelease(): void;
    /**
     * Запускает режим затухания
     */
    private startFading;
    /**
     * Останавливает режим затухания
     */
    private stopFading;
    /**
     * Ограничивает угол поворота по вертикальной оси
     */
    private limitCameraRotationY;
    /**
     * Рассчитывает положение камеры согласно текущей скорости с эмуляцией инерции
     * @param time - ms from page load
     */
    tick(time: number): void;
}
