import type { TimeUnit } from "../../core/units.js";

/** @since 5.0 */
export type OrientedImageryType = "horizontal" | "nadir" | "oblique" | "360" | "inspection" | "terrestrial-frame-video" | "aerial-frame-video" | "terrestrial-360-video" | "aerial-360-video";

/** @since 5.0 */
export type Accuracy = [
    number,
    number,
    number,
    number,
    number,
    number,
    number,
    number
];

/** @since 5.0 */
export type AffineTransformations = [
    number,
    number,
    number,
    number,
    number,
    number
];

/** @since 5.0 */
export type PrincipalOffsetPoint = [
    number,
    number
];

/** @since 5.0 */
export type RadialDistortionCoefficients = [
    number,
    number,
    number
];

/** @since 5.0 */
export type TangentialDistortionCoefficients = [
    number,
    number
];

/**
 * The elevation source.
 *
 * @since 5.0
 */
export interface ElevationSource {
  /**
   * The url of the elevation source.
   *
   * @since 5.0
   */
  url: string;
  /**
   * The raster function used in the elevation source.
   *
   * @since 5.0
   */
  rasterFunction?: string | null;
  /**
   * The level of details (LODs) of the elevation source.
   *
   * @since 5.0
   */
  lod?: number | null;
}

/**
 * The unit of constant elevation value measured in meters.
 *
 * @since 5.0
 */
export interface ConstantElevation {
  /**
   * The constant associated with the elevation source.
   *
   * @since 5.0
   */
  constantElevation: number;
}

/** @since 5.0 */
export type TimeIntervalUnit = Extract<TimeUnit, "days" | "hours" | "minutes" | "months" | "weeks" | "years">;

/** @since 5.1 */
export interface SequenceOrderFieldInfoJSON {}