/** @packageDocumentation
 * @module DisplayStyles
 */
import { BackgroundMapProps } from "./BackgroundMapSettings";
/** Identifies a [TerrainProvider]($frontend).
 * @see [[TerrainSettings.providerName]] and [[TerrainProps.providerName]].
 * @public
 * @extensions
 * @deprecated in 3.x. Use string instead.
 */
export type TerrainProviderName = string;
/** Ids of [Cesium ION assets](https://cesium.com/platform/cesium-ion/content/) providing global terrain data.
 * These values are appropriate to use with [[TerrainSettings.dataSource]] when [[TerrainSettings.providerName]] is set to "CesiumWorldTerrain".
 * You may alternatively use the Id of any ION asset to which you have access.
 * @see [[TerrainSettings.fromCesiumIonAsset]] to create TerrainSettings that obtain terrain from a specified ION asset.
 * @public
 */
export declare enum CesiumTerrainAssetId {
    /** Default [global 3d terrain](https://cesium.com/platform/cesium-ion/content/cesium-world-terrain/). */
    Default = "1",
    /** Global 3d terrain that includes [bathymetry](https://cesium.com/platform/cesium-ion/content/cesium-world-bathymetry/) (seafloor) terrain. */
    Bathymetry = "2426648"
}
/**  JSON representation of the settings of the terrain applied to background map display by a [[DisplayStyle]].
 * @see [[DisplayStyleSettingsProps]]
 * @see [[BackgroundMapProps]]
 * @public
 * @extensions
 */
export interface TerrainProps {
    /** Identifies the [TerrainProvider]($frontend) that will supply terrain meshes.
     * If omitted, it defaults to "CesiumWorldTerrain".
     */
    providerName?: string;
    /** Identifies the specific terrain data source to be supplied by the [TerrainProvider]($frontend) identified by [[providerName]],
     * for those providers that support multiple data sources.
     * For example, the "CesiumWorldTerrain" provider uses this field to store a [[CesiumTerrainAssetId]].
     * Default value: an empty string.
     */
    dataSource?: string;
    /** A value greater than one will cause terrain height to be exaggerated/scaled.false (or 1.0) indicate no exaggeration. Default value: 1.0 */
    exaggeration?: number;
    /**  Applying lighting can help to visualize subtle terrain variation.  Default value: true */
    applyLighting?: boolean;
    /** Origin value - height of the IModel origin at the project center as defined by heightOriginMode. Default value: 0.0 */
    heightOrigin?: number;
    /** Determines how/if the heightOrigin is applied to the terrain height. Default value: Geodetic */
    heightOriginMode?: TerrainHeightOriginMode;
    /** If true, the terrain will not be locatable. Otherwise, [[BackgroundMapProps.nonLocatable]] will determine whether terrain is locatable.
     * @internal use [[BackgroundMapProps.nonLocatable]]. Retained for backwards compatibility only.
     */
    nonLocatable?: boolean;
}
/** Correction modes for terrain height
 * @see [[TerrainProps]]
 * @public
 * @extensions
 */
export declare enum TerrainHeightOriginMode {
    /** Height value indicates the geodetic height of the IModel origin (also referred to as ellipsoidal or GPS height) */
    Geodetic = 0,
    /** Height value indicates the geoidal height of the IModel origin (commonly referred to as sea level). */
    Geoid = 1,
    /** Height value indicates the height of the IModel origin relative to ground level at project center. */
    Ground = 2
}
/** Normalized version of [[TerrainProps]] for which provider has been validated and default values of all members are used.
 * @public
 */
export declare class TerrainSettings {
    private _nonLocatable;
    /** Identifies the [TerrainProvider]($frontend) that will supply terrain meshes.
     * Defaults to "CesiumWorldTerrain".
     */
    readonly providerName: string;
    /** Identifies the specific terrain data source to be supplied by the [TerrainProvider]($frontend) identified by [[providerName]],
     * for those providers that support multiple data sources.
     * For example, the "CesiumWorldTerrain" provider uses this field to store a [[CesiumTerrainAssetId]].
     * Default value: an empty string.
     */
    readonly dataSource: string;
    /** A value greater than one will cause terrain height to be exaggerated/scaled. 1.0 indicates no exaggeration. Default value: 1.0 */
    readonly exaggeration: number;
    /**  Applying lighting can help to visualize subtle terrain variations. Default value: false */
    readonly applyLighting: boolean;
    /** Origin value - height of the IModel origin at the project center as defined by heightOriginMode. Default value 0.0 */
    readonly heightOrigin: number;
    /** Determines how/if the heightOrigin is applied to the terrain height. Default value: Geodetic */
    readonly heightOriginMode: TerrainHeightOriginMode;
    /** Optionally overrides [[BackgroundMapSettings.locatable]]. For backwards compatibility only.
     * @see [[TerrainProps.nonLocatable]].
     * @internal
     */
    get nonLocatable(): true | undefined;
    /** @deprecated in 4.5.x. Use the overload that takes [[TerrainProps]]. */
    constructor(providerName?: string, exaggeration?: number, applyLighting?: boolean, heightOrigin?: number, heightOriginMode?: TerrainHeightOriginMode);
    constructor(props?: TerrainProps);
    static fromJSON(json?: TerrainProps): TerrainSettings;
    /** Create settings that obtain terrain from a [Cesium ION asset](https://cesium.com/platform/cesium-ion/content/) such as
     * one of those defined by [[CesiumTerrainAssetId]].
     * @note You must ensure your Cesium ION account has access to the specified asset.
     */
    static fromCesiumIonAsset(assetId?: string, options?: Omit<TerrainProps, "providerName" | "dataSource">): TerrainSettings;
    toJSON(): TerrainProps;
    equals(other: TerrainSettings): boolean;
    /** Returns true if these settings are equivalent to the supplied JSON settings. */
    equalsJSON(json?: BackgroundMapProps): boolean;
    /** Create a copy of this TerrainSettings, optionally modifying some of its properties.
     * @param changedProps JSON representation of the properties to change.
     * @returns A TerrainSettings with all of its properties set to match those of`this`, except those explicitly defined in `changedProps`.
     */
    clone(changedProps?: TerrainProps): TerrainSettings;
}
//# sourceMappingURL=TerrainSettings.d.ts.map