import type Edges3D from "./Edges3D.js";
import type { Edges3DProperties } from "./Edges3D.js";

export interface SketchEdges3DProperties extends Edges3DProperties {}

/**
 * SketchEdges3D is a symbol type that visualizes edges of [3D Object SceneLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/), extruded
 * polygons or mesh geometries with a sketched line. It can be used to emphasize the form of 3D objects and to improve the
 * three-dimensional spatial understanding. A sketched line aims to look like a hand-drawn line. In architecture this is
 * useful for visualizing planned urban projects.
 *
 * This symbol can only be set on the [FillSymbol3DLayer.edges](https://developers.arcgis.com/javascript/latest/references/core/symbols/FillSymbol3DLayer/#edges) within a [MeshSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/MeshSymbol3D/)
 * or on the [ExtrudeSymbol3DLayer.edges](https://developers.arcgis.com/javascript/latest/references/core/symbols/ExtrudeSymbol3DLayer/#edges) on [PolygonSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/PolygonSymbol3D/).
 *
 * @since 4.7
 * @example
 * let symbol = {
 *   type: "mesh-3d", // autocasts as new MeshSymbol3D()
 *   symbolLayers: [{
 *     type: "fill", // autocasts as new FillSymbol3DLayer()
 *     material: {
 *       color: [244, 247, 134]
 *     },
 *     edges: {
 *       type: "sketch", // autocasts as new SketchEdges3D()
 *       color: [50, 50, 50, 0.5],
 *       size: 1.5,
 *       extensionLength: 2
 *     }
 *   }]
 * };
 */
export default class SketchEdges3D extends Edges3D {
  constructor(properties?: SketchEdges3DProperties);
  /** The symbol type. */
  readonly type: "sketch";
  /**
   * Creates a deep clone of the object.
   *
   * @returns A deep clone of the object that
   *   invoked this method.
   */
  clone(): SketchEdges3D;
}