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

export interface VoxelFormatProperties {}

/** @since 5.0 */
export type VariableContinuity = "discrete" | "continuous";

/** @since 5.0 */
export type VoxelFormatType = "Int8" | "UInt8" | "Int16" | "UInt16" | "Int32" | "UInt32" | "Float32" | "Float64";

/**
 * A description of various properties of the variable as it is represented on the GPU.
 *
 * @since 5.0
 */
export default class VoxelFormat extends JSONSupport {
  constructor(properties?: VoxelFormatProperties);
  /**
   * Whether or not the data is discrete or continuous.
   *
   * @since 5.0
   */
  get continuity(): VariableContinuity | null;
  /**
   * Whether or not the data has a value representing NoData.
   *
   * @default false
   * @since 5.0
   */
  get hasNoData(): boolean;
  /**
   * The NoData value if there is one.
   *
   * @default 0.0
   * @since 5.0
   */
  get noData(): number;
  /**
   * Indicates how the data are encoded.
   *
   * @since 5.0
   */
  get type(): VoxelFormatType | null;
}