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

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

/** @since 5.0 */
export default class IconSymbol3DLayerResource extends JSONSupport {
  /** @since 5.0 */
  constructor(properties?: IconSymbol3DLayerResourceProperties);
  /**
   * The URL or data URI for the image. If the external resource is an SVG then the
   * SVG root node must have a set width and height, otherwise it will not render at the correct size.
   *
   * @since 5.0
   */
  accessor href: string | null | undefined;
  /**
   * Uses a built-in shape.
   * Note that when using the `cross` or `x` primitive, the [IconSymbol3DLayer.outline](https://developers.arcgis.com/javascript/latest/references/core/symbols/IconSymbol3DLayer/#outline) property has to be defined to make the symbol visible. See the table below for list of possible values.
   *
   * Value | Description
   * ------|------------
   * circle | ![s3d-icon-circle](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-icon-circle.png)
   * square |  ![s3d-icon-square](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-icon-square.png)
   * cross | ![s3d-icon-cross](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-icon-cross.png)
   * x | ![s3d-icon-x](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-icon-x.png)
   * kite | ![s3d-icon-kite](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-icon-kite.png)
   * triangle | ![s3d-icon-triangle](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols3d-icon-triangle.png)
   *
   * @since 5.0
   */
  primitive?: IconSymbol3DLayerPrimitive | null;
}