import { Vector2 } from './Vector2';
import { Rotation } from './Rotation';
/** @group Important Classes */
export declare class Transform {
    /** Position */
    position: Vector2;
    /** Width and height */
    scale: Vector2;
    /** Rotation */
    rotation: Rotation;
    /**
     * Constructs new Transform
     * @param posX The X-coordinate
     * @param posY The Y-coordinate
     * @param scaleX The width
     * @param scaleY The height
     * @param rotation The rotation in degrees
     */
    constructor(posX: number, posY: number, scaleX: number, scaleY: number, rotation?: number);
    /**
     * Gets rotation in radians.
     */
    get angles(): number;
    /**
     * Sets rotation in radians.
     */
    set angles(radians: number);
    /**
     * Gets rotation in degrees.
     * @property
     */
    get eulerAngles(): number;
    /**
     * Sets rotation in degrees.
     */
    set eulerAngles(degrees: number);
    /**
     * Gets the Vector2 of center position.
     * @returns The center position
     */
    get positionCenter(): Vector2;
    /**
     * Gets forward Vector2
     * @property
     */
    get forward(): Vector2;
    /**
     * Gets backward Vector2
     * @property
     */
    get backward(): Vector2;
    /**
     * @beta
     * @method
     */
    bounce(): void;
    /**
     * @beta
     * @method
     * @param grid Game canvas grid setting
     */
    ifOnEdgeBounce(grid: Vector2): void;
    set(x: number | Vector2, y?: number): void;
    setX(x: number | Vector2): void;
    setY(y: number | Vector2): void;
    /**
     * Repositions X-coordinate and Y-coordinate.
     * @method
     * @param x - Vector2 or X-coordinate
     * @param y - Optional Y-coordinate
     * @example
     * const vector2 = new JSGL.Vector2(5, 2);
     * transform.translate(vector2);
     *
     * transform.translate(5, 2);
     */
    translate(x: number | Vector2, y?: number): void;
    /**
     * Repositions X-coordinate.
     * @method
     * @param x - Vector2 or X-coordinate
     * @example
     * const vector2 = new JSGL.Vector2(5, 2);
     * transform.translateX(vector2);
     *
     * transform.translateX(5);
     */
    translateX(x: number | Vector2): void;
    /**
     * Repositions Y-coordinate.
     * @method
     * @param y - Vector2 or Y-coordinate
     * @example
     * const vector2 = new JSGL.Vector2(5, 2);
     * transform.translateY(vector2);
     *
     * transform.translateY(2);
     */
    translateY(y: number | Vector2): void;
    /**
     * Clones Transform and returns new object.
     * @method
     * @returns The cloned object
     */
    clone(): Transform;
}
