import { ArrayNumber16, ArrayNumber3, ArrayNumber4 } from "../types";
import { TgdMat4 } from "./mat4";
import { TgdQuat } from "./quat";
import { TgdVec3 } from "./vec3";
import { TgdVec4 } from "./vec4";
export interface TgdTransfoOptions {
    distance: number;
    position: TgdVec3 | ArrayNumber3;
    scale: TgdVec3 | ArrayNumber3;
    orientation: TgdQuat | ArrayNumber4;
}
export declare class TgdTransfo {
    private readonly _matrix;
    private readonly _position;
    private readonly _orientation;
    private readonly _scale;
    private _distance;
    private readonly tmpVec3;
    private readonly _axisX;
    private readonly _axisY;
    private readonly _axisZ;
    private dirty;
    private _updateCount;
    constructor(source?: TgdTransfo | Partial<TgdTransfoOptions>);
    from(transfo: Readonly<TgdTransfo> | Readonly<Partial<TgdTransfoOptions>>): this;
    fromMatrix(mat: TgdMat4 | ArrayNumber16): this;
    get updateCount(): number;
    get matrix(): TgdMat4;
    set matrix(value: Readonly<TgdMat4> | ArrayNumber16);
    get axisX(): Readonly<TgdVec3>;
    get axisY(): Readonly<TgdVec3>;
    get axisZ(): Readonly<TgdVec3>;
    private updateIfNeeded;
    reset(): this;
    get distance(): number;
    set distance(value: number);
    setDistance(value: number): this;
    get position(): Readonly<TgdVec3>;
    set position(value: Readonly<TgdVec3 | TgdVec4 | ArrayNumber3>);
    setPosition(x: number | TgdVec3 | TgdVec4 | ArrayNumber3 | ArrayNumber4, y: number, z: number): this;
    /**
     * When `this.distance` is not null, we are orbitiong around the `position`.
     * Then, the `actualPosition` is different.
     */
    get actualPosition(): Readonly<TgdVec3>;
    get scale(): Readonly<TgdVec3>;
    set scale(value: Readonly<TgdVec3 | ArrayNumber3>);
    setScale(x: number | TgdVec3 | TgdVec4 | ArrayNumber3 | ArrayNumber4, y: number, z: number): this;
    get orientation(): Readonly<TgdQuat>;
    set orientation(quat: Readonly<TgdQuat | ArrayNumber4>);
    setOrientation(source: TgdVec4 | ArrayNumber4 | TgdQuat): this;
    setOrientation(x: number, y: number, z: number, w: number): this;
    orbitAroundX(angleInRadians: number): this;
    orbitAroundY(angleInRadians: number): this;
    orbitAroundZ(angleInRadians: number): this;
    moveAlongAxes(dx: number, dy: number, dz: number): this;
    debug(caption?: string): void;
    private setDirty;
}
//# sourceMappingURL=transfo.d.ts.map