import type Pattern3D from "./Pattern3D.js";
import type { FillStyle } from "../types.js";

export interface StylePattern3DProperties extends Partial<Pick<StylePattern3D, "style">> {}

/**
 * Renders polygons with predefined style pattern fills.
 *
 * [![polygon-patterns](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/polygon-patterns.png)](https://developers.arcgis.com/javascript/latest/sample-code/visualization-polygon-patterns/)
 *
 * @since 4.17
 * @see [FillSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/FillSymbol3DLayer/)
 * @see [Urban visualization with polygon patterns](https://developers.arcgis.com/javascript/latest/sample-code/visualization-polygon-patterns/)
 * @example
 * const symbol = {
 *   type: "polygon-3d",  // autocasts as new PolygonSymbol3D()
 *   symbolLayers: [{
 *     type: "fill",  // autocasts as new FillSymbol3DLayer()
 *     material: { color: "red" },
 *     outline: { color: "red" },
 *     pattern: {
 *       type: "style",
 *       style: "cross"
 *     }
 *   }]
 * };
 */
export default class StylePattern3D extends Pattern3D {
  constructor(properties?: StylePattern3DProperties);
  /**
   * The fill style.
   * Possible values are listed in the table below:
   *
   * Value | Description
   * ------|-------------
   * backward-diagonal | ![sfs-backward-diagonal](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols-sfs-backward-diagonal.png)
   * cross | ![sfs-cross](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols-sfs-cross.png)
   * diagonal-cross | ![sfs-diagonal-cross](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols-sfs-diagonal-cross.png)
   * forward-diagonal | ![sfs-forward-diagonal](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols-sfs-forward-diagonal.png)
   * horizontal | ![sfs-horizontal](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols-sfs-horizontal.png)
   * none | The polygon has no fill.
   * solid | ![sfs-solid](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols-sfs-solid.png)
   * vertical | ![sfs-vertical](https://developers.arcgis.com/javascript/latest/assets/references/core/symbols/symbols-sfs-vertical.png)
   *
   * @default "solid"
   */
  accessor style: FillStyle;
  /** The pattern type. */
  get type(): "style";
}