import { Number3 } from '../types/GlobalTypes';
import { BufferGeometry, Matrix4, Object3D, Vector3 } from 'three';
import { BaseNodeType } from '../engine/nodes/_Base';
export declare enum TransformTargetType {
    OBJECT = "object",
    GEOMETRY = "geometry"
}
export declare const TRANSFORM_TARGET_TYPES: TransformTargetType[];
export declare enum RotationOrder {
    XYZ = "XYZ",
    XZY = "XZY",
    YXZ = "YXZ",
    YZX = "YZX",
    ZYX = "ZYX",
    ZXY = "ZXY"
}
export declare const ROTATION_ORDERS: RotationOrder[];
export declare const DEFAULT_ROTATION_ORDER = RotationOrder.XYZ;
export interface SetParamsFromMatrixOptions {
    scale?: boolean;
}
export declare function rotationMatrix(dirOrigin: Vector3, dirDest: Vector3, target: Matrix4): void;
export declare function rotateGeometry(geometry: BufferGeometry, dirOrigin: Vector3, dirDest: Vector3): void;
export declare class CoreTransform {
    private static set_params_from_matrix_position;
    private static set_params_from_matrix_quaternion;
    private static set_params_from_matrix_scale;
    private static set_params_from_matrix_euler;
    private static set_params_from_matrix_rotation;
    private static set_params_from_matrix_t;
    private static set_params_from_matrix_r;
    private static set_params_from_matrix_s;
    static setParamsFromMatrix(matrix: Matrix4, node: BaseNodeType, options?: SetParamsFromMatrixOptions): void;
    static set_params_from_object_position_array: Number3;
    static set_params_from_object_rotation_deg: Vector3;
    static set_params_from_object_rotation_array: Number3;
    static setParamsFromObject(object: Object3D, node: BaseNodeType): void;
    private _translation_matrix;
    private _translation_matrix_q;
    private _translation_matrix_s;
    translationMatrix(t: Vector3): Matrix4;
    private _matrix;
    private _matrixQ;
    private _matrixEuler;
    private _matrixS;
    matrix(t: Vector3, r: Vector3, s: Vector3, scale: number, rotationOrder: RotationOrder): Matrix4;
    static rotateObject(object: Object3D, dirOrigin: Vector3, dirDest: Vector3): void;
    static decomposeMatrix(object: Object3D): void;
}
