import type Symbol3DMaterial from "./Symbol3DMaterial.js";
import type { Symbol3DMaterialProperties } from "./Symbol3DMaterial.js";
import type { Symbol3DColorMixMode } from "./types.js";

/** @since 5.0 */
export interface Symbol3DFillMaterialProperties extends Symbol3DMaterialProperties, Partial<Pick<Symbol3DFillMaterial, "colorMixMode">> {}

/** @since 5.0 */
export default class Symbol3DFillMaterial extends Symbol3DMaterial {
  /** @since 5.0 */
  constructor(properties?: Symbol3DFillMaterialProperties);
  /**
   * Specifies how the material `color` is applied to the geometry color/texture information.
   * This property applies only to [MeshSymbol3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/MeshSymbol3D/) symbols.
   *
   * Value | Description
   * ------|------------
   * tint | Applies the material `color` to the desaturated geometry/texture color.
   * replace | Removes the geometry/texture color and applies the material `color`.
   * multiply | Multiplies geometry/texture color value with the material `color` value. The result is a darker color. Multiplying with white keeps the geometry color the same.
   *
   * @since 5.0
   */
  colorMixMode?: Exclude<Symbol3DColorMixMode, "ignore"> | null;
}