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

export interface VoxelSliceProperties extends Partial<Pick<VoxelSlice, "enabled" | "label" | "orientation" | "point" | "tilt">> {}

/**
 * The VoxelSlice allows you to define the properties of an individual slice. Slices clip the volume along an infinite plane to yield a convex shell that is rendered. Updates to the position, orientation and tilt of a slice are rendered in real-time.
 *
 * @since 4.25
 * @see [Sample - Create area of interest for VoxelLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-voxel-slices/)
 */
export default class VoxelSlice extends VoxelSliceSuperclass {
  /**
   * @example
   * // Typical usage
   * let slice = new VoxelSlice({
   *   orientation: 270,
   *   tilt: 90,
   *   point: [128, 64, 89]
   * });
   */
  constructor(properties?: VoxelSliceProperties);
  /**
   * Whether or not the slice is enabled.
   *
   * @default true
   */
  accessor enabled: boolean;
  /**
   * The label for the slice.
   *
   * @default ""
   */
  accessor label: string;
  /** The orientation angle (in the degrees) of the slice plane. */
  accessor orientation: number;
  /** A point on the slice plane specified as [x ,y, z] in voxel space for XYZ and XYZT volumes and as [x, y, t] for XYT volumes. */
  accessor point: [
      number,
      number,
      number
  ];
  /** The tilt angle (in degrees) of the slice plane. */
  accessor tilt: number;
}
declare const VoxelSliceSuperclass: typeof JSONSupport & typeof ClonableMixin