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

export interface VoxelUniqueValueProperties extends JSONSupportMixinProperties, ClonableMixinProperties, Partial<Pick<VoxelUniqueValue, "enabled" | "label" | "value">> {
  /** The color to render this value with. */
  color?: ColorLike;
}

/** VoxelUniqueValue describes a particular voxel discrete value how to render it. */
export default abstract class VoxelUniqueValue extends VoxelUniqueValueSuperclass {
  /** The color to render this value with. */
  get color(): EsriColor;
  set color(value: ColorLike);
  /**
   * Whether or not to render data with this value.
   *
   * @default true
   */
  accessor enabled: boolean;
  /**
   * The label string for this value.
   *
   * @default ""
   */
  accessor label: string;
  /**
   * The data value.
   *
   * @default 0
   */
  accessor value: number;
}
declare const VoxelUniqueValueSuperclass: typeof JSONSupport & typeof ClonableMixin