/** @packageDocumentation
 * @module Views
 */
import { BeTimePoint } from "@itwin/core-bentley";
import { Angle, Matrix3d, Point2d, Point3d, Vector3d } from "@itwin/core-geometry";
import { Camera } from "@itwin/core-common";
import { ViewState, ViewState2d, ViewState3d } from "./ViewState";
/** The "pose" for a [View]($docs/learning/frontend/views#viewstate-parameters) describing the viewed area or volume, depending upon whether
 * the view is 2d or 3d.
 * @see [[ViewState.savePose]] to extract a pose from a view and [[ViewState.applyPose]] to apply a pose to a view.
 * @note a ViewPose is immutable.
 * @public
 * @extensions
 */
export declare abstract class ViewPose {
    /** The time at which this pose was created, if it was saved into a [[Viewport]]'s undo stack. */
    undoTime?: BeTimePoint;
    /** Returns true if this pose is equivalent to the pose represented by the specified [[ViewState]].
     * This implies that `this.equal(view.savePose())`.
     */
    abstract equalState(view: ViewState): boolean;
    /** Returns true if this pose is equivalent to the specified other pose. */
    abstract equal(other: ViewPose): boolean;
    /** The origin of the view in [[CoordSystem.World]] coordinates.
     * @see [[ViewState.getOrigin]].
     */
    abstract origin: Point3d;
    /** The extents of the view in [[CoordSystem.World]] coordinates.
     * @see [[ViewState.getExtents]].
     */
    abstract extents: Vector3d;
    /** The 3x3 ortho-normal rotation matrix of the view.
     * @see [[ViewState.getRotation]].
     */
    abstract rotation: Matrix3d;
    /** True if the camera is enabled.
     * @see [[ViewPose3d.camera]] to access the camera.
     */
    cameraOn: boolean;
    /** Computes the center of the viewed volume. */
    get center(): Point3d;
    /** Returns the target point of the view. This is the same as [[center]] unless [[cameraOn]] is `true`. */
    get target(): Point3d;
    /** Computes the Z vector of the [[rotation]] matrix. */
    get zVec(): Vector3d;
    constructor(cameraOn: boolean);
}
/** The "pose" for a [[ViewState3d]], including information about the view's [Camera]($common) if it is enabled.
 * @public
 * @extensions
 */
export declare class ViewPose3d extends ViewPose {
    /** See [[ViewPose.origin]]. */
    readonly origin: Point3d;
    /** See [[ViewPose.extents]]. */
    readonly extents: Vector3d;
    /** See [[ViewPose.rotation]]. */
    readonly rotation: Matrix3d;
    /** The camera parameters of the view.
     * @note This object is meaningful only if [[ViewPose.cameraOn]] is `true`.
     */
    readonly camera: Camera;
    /** Construct a pose from the specified 3d view. */
    constructor(view: ViewState3d);
    /** See [[ViewPose.target]]. */
    get target(): Point3d;
    /** See [[ViewPose.equal]]. */
    equal(other: ViewPose): boolean;
    /** See [[ViewPose.equalState]]. */
    equalState(view: ViewState): boolean;
}
/** The "pose" for a [[ViewState2d]].
 * @public
 * @extensions
 */
export declare class ViewPose2d extends ViewPose {
    /** The 2d origin of the view.
     * @see [[ViewState2d.origin]].
     */
    readonly origin2d: Point2d;
    /** The 2d extents of the view.
     * @see [[ViewState2d.delta]].
     */
    readonly delta: Point2d;
    /** The rotation of the view.
     * @see [[ViewState2d.angle]].
     */
    readonly angle: Angle;
    /** Construct a pose from the specified 2d view. */
    constructor(view: ViewState2d);
    /** See [[ViewPose.equal]]. */
    equal(other: ViewPose): boolean;
    /** See [[ViewPose.equalState]]. */
    equalState(view: ViewState): boolean;
    /** See [[ViewPose.origin]]. */
    get origin(): Point3d;
    /** See [[ViewPose.extents]]. */
    get extents(): Vector3d;
    /** See [[ViewPose.rotation]]. */
    get rotation(): Matrix3d;
}
//# sourceMappingURL=ViewPose.d.ts.map