import type Color from "../../Color.js";
import type { ColorLike } from "../../Color.js";
import type { JSONSupport, JSONSupportMixinProperties } from "../../core/JSONSupport.js";

export interface Symbol3DIconOutlineProperties extends JSONSupportMixinProperties {
  /**
   * The color of the outline.
   * This can be autocast with an array of rgb(a) values, named string, hex string or an hsl(a) string,
   * an object with `r`, `g`, `b`, and `a` properties, or a [Color](https://developers.arcgis.com/javascript/latest/api-reference/esri-Color.html) object.
   */
  color?: ColorLike | null;
  /**
   * The width of the outline in points. This value may be autocast with a string
   * expressing size in points or pixels (e.g. `12px`).
   */
  size?: number | string;
}

export default abstract class Symbol3DIconOutline extends JSONSupport {
  /**
   * The color of the outline.
   * This can be autocast with an array of rgb(a) values, named string, hex string or an hsl(a) string,
   * an object with `r`, `g`, `b`, and `a` properties, or a [Color](https://developers.arcgis.com/javascript/latest/api-reference/esri-Color.html) object.
   */
  get color(): Color | null | undefined;
  set color(value: ColorLike | null | undefined);
  /**
   * The width of the outline in points. This value may be autocast with a string
   * expressing size in points or pixels (e.g. `12px`).
   */
  get size(): number;
  set size(value: number | string);
}