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

export interface ClipDistanceConstraintProperties extends ClonableMixinProperties, Partial<Pick<ClipDistanceConstraint, "far" | "mode" | "near">> {}

export default abstract class ClipDistanceConstraint extends Clonable {
  /** The far clip distance. */
  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"
   */
  accessor mode: "auto" | "manual";
  /** The near clip distance. */
  accessor near: number;
}