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

/** @since 5.0 */
export interface VoxelColorStopProperties extends Partial<Pick<VoxelColorStop, "position">> {
  /**
   * The color to render data at this position with.
   *
   * @since 5.0
   */
  color?: ColorLike;
}

/**
 * VoxelColorStop defines a color and a normalized (i.e. 0 to 1) position.
 *
 * @since 5.0
 * @see [Sample - Modify the color scheme of a continuous variable](https://developers.arcgis.com/javascript/latest/sample-code/layers-voxel-color-stops/)
 * @see [VoxelTransferFunctionStyle](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-voxel-VoxelTransferFunctionStyle.html)
 * @see [VoxelOpacityStop](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-voxel-VoxelOpacityStop.html)
 */
export default class VoxelColorStop extends VoxelColorStopSuperclass {
  /**
   * @example
   * // Typical usage
   * let voxelColorStop = new VoxelColorStop({
   *  color: [0, 255, 255, 255],
   *  position: 0.5
   * });
   */
  constructor(properties?: VoxelColorStopProperties);
  /**
   * The color to render data at this position with.
   *
   * @since 5.0
   */
  get color(): Color;
  set color(value: ColorLike);
  /**
   * The normalized position.
   *
   * @default 0
   * @since 5.0
   */
  accessor position: number;
}
declare const VoxelColorStopSuperclass: typeof JSONSupport & typeof ClonableMixin