import type Color from "../../Color.js";
import type { ColorLike } from "../../Color.js";
import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";
import type { Symbol3DEmissiveProperties, Symbol3DEmissive } from "./Symbol3DEmissive.js";

/** @since 5.0 */
export interface Symbol3DMaterialProperties {
  /**
   * The color of the fill.
   * 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.
   *
   * @since 5.0
   */
  color?: ColorLike | null;
  /**
   * The emissive information of this material.
   *
   * @since 5.0
   */
  emissive?: Symbol3DEmissiveProperties | null;
}

/** @since 5.0 */
export default class Symbol3DMaterial extends Symbol3DMaterialSuperclass {
  /** @since 5.0 */
  constructor(properties?: Symbol3DMaterialProperties);
  /**
   * The color of the fill.
   * 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.
   *
   * @since 5.0
   */
  get color(): Color | null | undefined;
  set color(value: ColorLike | null | undefined);
  /**
   * The emissive information of this material.
   *
   * @since 5.0
   */
  get emissive(): Symbol3DEmissive | null | undefined;
  set emissive(value: Symbol3DEmissiveProperties | null | undefined);
}
declare const Symbol3DMaterialSuperclass: typeof JSONSupport & typeof ClonableMixin