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

export type OrientedImageryType = "horizontal" | "nadir" | "oblique" | "360" | "inspection" | "terrestrial-frame-video" | "aerial-frame-video" | "terrestrial-360-video" | "aerial-360-video";

export type Accuracy = [
    number,
    number,
    number,
    number,
    number,
    number,
    number,
    number
];

export type AffineTransformations = [
    number,
    number,
    number,
    number,
    number,
    number
];

export type PrincipalOffsetPoint = [
    number,
    number
];

export type RadialDistortionCoefficients = [
    number,
    number,
    number
];

export type TangentialDistortionCoefficients = [
    number,
    number
];

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

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

export type TimeIntervalUnit = Extract<TimeUnit, "days" | "hours" | "minutes" | "months" | "weeks" | "years">;