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

/** @since 5.0 */
export interface TiltConstraintProperties extends Partial<Pick<TiltConstraint, "max" | "mode">> {}

/** @since 5.0 */
export default class TiltConstraint extends Clonable {
  constructor(properties?: TiltConstraintProperties);
  /**
   * Specifies the maximum amount of tilt (in degrees)
   *                             allowed in the view and may range from 0.5 to
   *                             179.5 degrees.
   *
   * @since 5.0
   */
  accessor max: number;
  /**
   * Specifies the mode of the constraint. There are two possible values:
   *                               `auto` or `manual`. In `auto` mode,
   *                              the maximum tilt value is automatically determined
   *                              based on the altitude of the view camera. In
   *                              `manual` mode, the maximum tilt value is a
   *                              user defined, constant value. **Note:** The mode
   *                              automatically changes to `manual` whenever
   *                              the `max` property is set.
   *
   * @default "auto"
   * @since 5.0
   */
  accessor mode: "auto" | "manual";
}