import * as Core from "@intelligentgraphics/ig.gfx.core";
import { Operation, TouchStartRequest, TouchMotionRequest, TouchEndRequest, MotionResult, EndResult } from "./Operation";
/** An operation that rotates around a point. */
export declare class RotationOperation implements Operation {
    /** The raster to which we align the rotation. Given in radians. */
    static rotationRaster: number;
    /** The initial position of the Objects. */
    private initialPositions;
    /** The last rotation (of the last motion event). */
    private lastPositions;
    /** The initial rotations of the objects. */
    private initialRotations;
    /** The last rotation (of the last motion event). */
    private lastRotations;
    /** The last angle of rotation. Given in radians. */
    private oldAngle;
    /** The main component which will be aligned to the raster. */
    private mainComponentIndex;
    /** The x, y and z axis. */
    private fixPoint;
    /** The constructor.
     * @param initialPositions The initial positions.
     * @param rotations The initial rotations. ??? Deg/Rad?
     * @param fixPoint The fix point around which we will rotate.
     */
    constructor(initialPositions: Core.Float3[], rotations: Core.Float3[], fixPoint: Core.Float3);
    private makeTransformations;
    /**
     * Set the main component index (the one that will affect alignment to the raster).
     * @param index The new main component index
     */
    setMainComponentIndex(index: number): void;
    executeStart(request: TouchStartRequest): void;
    executeMotion(request: TouchMotionRequest): MotionResult;
    /**
     * Rotates the i-th object by angle around the fixed point.
     * @param angle The number of angle to rotate. Given in radians.
     * @param i The index of the component that will be considered.
     */
    private applyRotation;
    executeEnd(request: TouchEndRequest): EndResult;
}
