/** @packageDocumentation
 * @module Views
 */
import { Ellipsoid, Matrix3d, Plane3dByOriginAndUnitNormal, Point3d, Range1d, Range3d, Ray3d, Transform, XYAndZ } from "@itwin/core-geometry";
import { Cartographic, Frustum, GlobeMode } from "@itwin/core-common";
import { IModelConnection } from "./IModelConnection";
import { GraphicBuilder } from "./render/GraphicBuilder";
/** @internal */
export declare function getFrustumPlaneIntersectionDepthRange(frustum: Frustum, plane: Plane3dByOriginAndUnitNormal): Range1d;
/** Geometry of background map - either an ellipsoid or a plane as defined by GlobeMode.
 * @internal
 */
export declare class BackgroundMapGeometry {
    private _bimElevationBias;
    private _iModel;
    readonly globeMode: GlobeMode;
    readonly geometry: Plane3dByOriginAndUnitNormal | Ellipsoid;
    readonly globeOrigin: Point3d;
    readonly globeMatrix: Matrix3d;
    readonly cartesianRange: Range3d;
    readonly cartesianTransitionRange: Range3d;
    readonly cartesianPlane: Plane3dByOriginAndUnitNormal;
    readonly cartesianDiagonal: number;
    readonly cartesianChordHeight: number;
    readonly maxGeometryChordHeight: number;
    private _mercatorFractionToDb;
    private _mercatorTilingScheme;
    private _ecefToDb;
    static maxCartesianDistance: number;
    private static _transitionDistanceMultiplier;
    private static _scratchRayFractions;
    private static _scratchRayAngles;
    private static _scratchPoint;
    constructor(_bimElevationBias: number, globeMode: GlobeMode, _iModel: IModelConnection);
    static getCartesianRange(iModel: IModelConnection, result?: Range3d): Range3d;
    static getCartesianTransitionDistance(iModel: IModelConnection): number;
    dbToCartographicFromGcs(db: XYAndZ[]): Promise<Cartographic[]>;
    dbToWGS84CartographicFromGcs(db: XYAndZ[]): Promise<Cartographic[]>;
    dbToCartographic(db: XYAndZ, result?: Cartographic): Cartographic;
    cartographicToDbFromGcs(cartographic: Cartographic[]): Promise<Point3d[]>;
    cartographicToDbFromWgs84Gcs(cartographic: Cartographic[]): Promise<Point3d[]>;
    cartographicToDb(cartographic: Cartographic, result?: Point3d): Point3d;
    getEarthEllipsoid(radiusOffset?: number): Ellipsoid;
    getPlane(offset?: number): Plane3dByOriginAndUnitNormal;
    getRayIntersection(ray: Ray3d, positiveOnly: boolean): Ray3d | undefined;
    getPointHeight(point: Point3d): number | undefined;
    /** @internal */
    getFrustumIntersectionDepthRange(frustum: Frustum, bimRange: Range3d, heightRange?: Range1d, gridPlane?: Plane3dByOriginAndUnitNormal, doGlobalScope?: boolean): Range1d;
    addFrustumDecorations(builder: GraphicBuilder, frustum: Frustum): void;
}
/** Calculate the ECEF to database (IModel) coordinate transform at a provided location, using the GCS of the iModel.
 *  The transform will exactly represent the GCS at the provided location.
 * @public
 */
export declare function calculateEcefToDbTransformAtLocation(originIn: Point3d, iModel: IModelConnection): Promise<Transform | undefined>;
//# sourceMappingURL=BackgroundMapGeometry.d.ts.map