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

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

/**
 * The VoxelDynamicSection allows you to define the properties of an individual dynamic section.  Dynamic sections define an opaque plane
 * inside of the volume which draws when the [renderMode](https://developers.arcgis.com/javascript/latest/references/core/layers/VoxelLayer/#renderMode) is set to `surfaces`. They are
 * not tied to a particular [VoxelVariable](https://developers.arcgis.com/javascript/latest/references/core/layers/voxel/VoxelVariable/), and their position and orientation can be modified with
 * real-time rendering updates.
 *
 * @since 4.25
 * @see [Sample - Explore a VoxelLayer using dynamic section](https://developers.arcgis.com/javascript/latest/sample-code/layers-voxel-dynamic-sections/)
 */
export default class VoxelDynamicSection extends VoxelDynamicSectionSuperclass {
  /**
   * @example
   * // Typical usage
   * let dynSec = new VoxelDynamicSection({
   *   orientation: 270,
   *   tilt: 90,
   *   point: [128, 64, 89]
   * });
   */
  constructor(properties?: VoxelDynamicSectionProperties);
  /**
   * Whether or not the dynamic section is enabled.
   *
   * @default true
   */
  accessor enabled: boolean;
  /**
   * The label for the dynamic section.
   *
   * @default ""
   */
  accessor label: string;
  /** The orientation angle (in the degrees) of the dynamic section plane. */
  accessor orientation: number;
  /** A point on the dynamic section 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 dynamic section plane. */
  accessor tilt: number;
}
declare const VoxelDynamicSectionSuperclass: typeof JSONSupport & typeof ClonableMixin