import type BuildingFilterMode from "./BuildingFilterMode.js";
import type SketchEdges3D from "../../symbols/edges/SketchEdges3D.js";
import type SolidEdges3D from "../../symbols/edges/SolidEdges3D.js";
import type { SketchEdges3DProperties } from "../../symbols/edges/SketchEdges3D.js";
import type { SolidEdges3DProperties } from "../../symbols/edges/SolidEdges3D.js";

/** @since 5.0 */
export interface BuildingFilterModeWireFrameProperties {
  /**
   * Defines the type of edges used to display a [BuildingSceneLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-BuildingSceneLayer.html)
   *
   * @since 5.0
   */
  edges?: (SolidEdges3DProperties & { type: "solid" }) | (SketchEdges3DProperties & { type: "sketch" }) | null;
}

/**
 * With `wire-frame` mode, only the edges of the features are shown
 *
 * @since 5.0
 */
export default class BuildingFilterModeWireFrame extends BuildingFilterMode {
  /** @since 5.0 */
  constructor(properties?: BuildingFilterModeWireFrameProperties);
  /**
   * Defines the type of edges used to display a [BuildingSceneLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-BuildingSceneLayer.html)
   *
   * @since 5.0
   */
  get edges(): SolidEdges3D | SketchEdges3D | null;
  set edges(value: (SolidEdges3DProperties & { type: "solid" }) | (SketchEdges3DProperties & { type: "sketch" }) | null);
  /** @since 5.0 */
  readonly type: "wire-frame";
}