import type { GeometryJson, PointJson } from "./GeometryJson.js";
/**
 * Describes a point of view for a 2D or 3D view. In a 2D view, the viewpoint is
 * determined using a center point and scale value. In a 3D view, it is
 * determined using a camera position. The Viewpoint can be bookmarked for later
 * use, or used for navigation purposes.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/viewpoint/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/viewpoint/}.
 */
export interface ViewpointJson {
    /**
     * The camera defines the position, tilt, and heading of the point from
     * which the SceneView's visible extent is observed.
     */
    camera?: CameraJson | null;
    /**
     * The rotation of due north in relation to the top of the view in degrees.
     */
    rotation?: number | null;
    /**
     * The scale of the viewpoint.
     */
    scale?: number | null;
    /**
     * The target geometry framed by the viewpoint.
     */
    targetGeometry?: GeometryJson | null;
}
/**
 * The camera defines the position, tilt, and heading of the point from which
 * the SceneView's visible extent is observed.
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/camera/}.
 */
export interface CameraJson {
    /**
     * The heading of the camera in degrees. Heading is zero when north is the
     * top of the screen. It increases as the view rotates clockwise. The angles
     * are always normalized between 0 and 360 degrees.
     */
    heading?: number | null;
    /**
     * The position of the camera defined by a map point.
     */
    position: PointJson;
    /**
     * The tilt of the camera in degrees with respect to the surface as
     * projected down from the camera position. Tilt is zero when looking
     * straight down at the surface and 90 degrees when the camera is looking
     * parallel to the surface.
     */
    tilt?: number | null;
}
