import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";

export interface MeshTransformProperties extends Partial<Pick<MeshTransform, "rotationAngle" | "rotationAxis" | "scale" | "translation">> {}

/**
 * Represents a transformation that combines translation, rotation and scale for a mesh.
 *
 * @since 4.27
 * @see [Mesh](https://developers.arcgis.com/javascript/latest/references/core/geometry/Mesh/)
 */
export default class MeshTransform extends MeshTransformSuperclass {
  constructor(properties?: MeshTransformProperties);
  /**
   * Rotation angle in degrees. The rotation angle is in a right-handed sense around the rotation axis. For example,
   * a positive rotation around the axis [0, 0, 1] results in a counter-clockwise rotation.
   *
   * @default 0
   */
  accessor rotationAngle: number;
  /**
   * Axis of rotation.
   *
   * @default [0, 0, 1]
   */
  accessor rotationAxis: [
      number,
      number,
      number
  ];
  /**
   * Scale.
   *
   * @default [1, 1, 1]
   */
  accessor scale: [
      number,
      number,
      number
  ];
  /**
   * Translation.
   *
   * @default [0, 0, 0]
   */
  accessor translation: [
      number,
      number,
      number
  ];
}
declare const MeshTransformSuperclass: typeof JSONSupport & typeof ClonableMixin