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

export interface MeshGeoreferencedVertexSpaceProperties extends Partial<Pick<MeshGeoreferencedVertexSpace, "origin">> {}

/**
 * A mesh vertex space indicating that mesh vertices are either absolute georeferenced map coordinates or relative
 * offsets in map space to a fully georeferenced
 * origin. The map space is identified by the [spatial reference](https://developers.arcgis.com/javascript/latest/references/core/geometry/Mesh/#spatialReference) of
 * the mesh.
 *
 * The vertex space of a mesh allows users to specify how the coordinates of the mesh vertices are interpreted. Use the
 * georeferenced vertex space if the coordinates are already in the spatial reference of the mesh. The coordinates can
 * be relative to the [origin](https://developers.arcgis.com/javascript/latest/references/core/geometry/support/MeshGeoreferencedVertexSpace/#origin) or absolute
 * coordinates if the origin is not defined.
 *
 * See [mesh API](https://developers.arcgis.com/javascript/latest/references/core/geometry/Mesh/#mesh-api) for more details.
 *
 * @since 4.27
 * @see [Mesh](https://developers.arcgis.com/javascript/latest/references/core/geometry/Mesh/)
 */
export default class MeshGeoreferencedVertexSpace extends MeshGeoreferencedVertexSpaceSuperclass {
  constructor(properties?: MeshGeoreferencedVertexSpaceProperties);
  /**
   * Origin of the vertex space. These coordinates are interpreted in the spatial reference of the mesh using the vertex space.
   * If this is null, the coordinates are expected to be absolute. If not, the coordinates are expected to be deltas relative
   * to the origin.
   */
  accessor origin: readonly [
      number,
      number,
      number
  ] | null | undefined;
  /** Type of the vertex space. */
  readonly type: "georeferenced";
}
declare const MeshGeoreferencedVertexSpaceSuperclass: typeof JSONSupport & typeof ClonableMixin