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

/** @since 5.0 */
export interface ClipDistanceConstraintProperties extends Partial<Pick<ClipDistanceConstraint, "far" | "mode" | "near">> {}

/** @since 5.0 */
export default class ClipDistanceConstraint extends Clonable {
  constructor(properties?: ClipDistanceConstraintProperties);
  /**
   * The far clip distance.
   *
   * @since 5.0
   */
  accessor far: number;
  /**
   * Specifies the mode of the constraint which is
   *                                      either `auto` or `manual`. In `auto` mode,
   *                                      the near and far clip distance values are
   *                                      automatically determined. In `manual` mode,
   *                                      the near and far clip distance values are user
   *                                      defined, constant values. Note that the mode
   *                                      automatically changes to `manual` whenever
   *                                      the `near` or `far` property is set.
   *
   * @default "auto"
   * @since 5.0
   */
  accessor mode: "auto" | "manual";
  /**
   * The near clip distance.
   *
   * @since 5.0
   */
  accessor near: number;
}