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

/** @since 5.0 */
export interface VoxelOpacityStopProperties extends Partial<Pick<VoxelOpacityStop, "opacity" | "position">> {}

/**
 * VoxelOpacityStop defines an opacity value and a normalized (i.e. 0 to 1) position.
 *
 * @since 5.0
 * @see [Sample - Modify the opacity of a continuous variable](https://developers.arcgis.com/javascript/latest/sample-code/layers-voxel-opacity-stops/)
 * @see [VoxelTransferFunctionStyle](https://developers.arcgis.com/javascript/latest/references/core/layers/voxel/VoxelTransferFunctionStyle/)
 * @see [VoxelColorStop](https://developers.arcgis.com/javascript/latest/references/core/layers/voxel/VoxelColorStop/)
 */
export default class VoxelOpacityStop extends VoxelOpacityStopSuperclass {
  /**
   * @example
   * // Typical usage
   * let voxelOpacityStop = new VoxelOpacityStop({
   *  opacity: 0.5,
   *  position: 0.5
   * });
   */
  constructor(properties?: VoxelOpacityStopProperties);
  /**
   * The opacity value (0 = transparent, 1 = opaque) to apply to data at this position.
   *
   * @default 1
   * @since 5.0
   */
  accessor opacity: number;
  /**
   * The normalized  position.
   *
   * @default 0
   * @since 5.0
   */
  accessor position: number;
}
declare const VoxelOpacityStopSuperclass: typeof JSONSupport & typeof ClonableMixin