import type { JSONSupport } from "../../core/JSONSupport.js";
import type { ObjectSymbol3DLayerPrimitiveType } from "../types.js";

/** @since 5.0 */
export interface ObjectSymbol3DLayerResourceProperties extends Partial<Pick<ObjectSymbol3DLayerResource, "href" | "primitive">> {}

/** @since 5.0 */
export default class ObjectSymbol3DLayerResource extends JSONSupport {
  /** @since 5.0 */
  constructor(properties?: ObjectSymbol3DLayerResourceProperties);
  /**
   * The URL to the 3D model in [glTF format](https://www.khronos.org/gltf/).
   * The URL should point to a glTF file (.gltf or .glb)
   * which can reference additional binary (.bin) and image files (.jpg, .png). See the guide topic on
   * [Visualizing points with 3D symbols](https://developers.arcgis.com/javascript/latest/visualizing-points-3d/) to learn how to use a custom 3D model.
   *
   * @since 5.0
   */
  accessor href: string | null | undefined;
  /**
   * Uses a built-in shape. See the table below for possible values.
   *
   *
   * Value | Description
   * ------|------------
   * sphere | ![s3d-object-sphere](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-object-sphere.png)
   * cylinder | ![s3d-object-cylinder](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-object-cylinder.png)
   * cube | ![s3d-object-cube](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-object-cube.png)
   * cone | ![s3d-object-cone](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-object-cone.png)
   * inverted-cone | ![s3d-object-inverted-cone](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-object-inverted-cone.png)
   * diamond | ![s3d-object-diamond](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-object-diamond.png)
   * tetrahedron | ![s3d-object-tetrahedron](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-object-tetrahedron.png)
   *
   * @since 5.0
   */
  primitive?: ObjectSymbol3DLayerPrimitiveType | null;
}