function CesiumTerrainProvider(options) {
  options = options ?? Frozen.EMPTY_OBJECT;

  this._heightmapWidth = undefined;
  this._heightmapStructure = undefined;
  this._hasWaterMask = false;
  this._hasVertexNormals = false;
  this._hasMetadata = false;
  this._scheme = undefined;
  this._ellipsoid = options.ellipsoid;

  /**
   * Boolean flag that indicates if the client should request vertex normals from the server.
   * @type {boolean}
   * @default false
   * @private
   */
  this._requestVertexNormals = options.requestVertexNormals ?? false;

  /**
   * Boolean flag that indicates if the client should request tile watermasks from the server.
   * @type {boolean}
   * @default false
   * @private
   */
  this._requestWaterMask = options.requestWaterMask ?? false;

  /**
   * Boolean flag that indicates if the client should request tile metadata from the server.
   * @type {boolean}
   * @default true
   * @private
   */
  this._requestMetadata = options.requestMetadata ?? true;

  this._errorEvent = new Event();

  let credit = options.credit;
  if (typeof credit === "string") {
    credit = new Credit(credit);
  }
  this._credit = credit;

  this._availability = undefined;
  this._tilingScheme = undefined;
  this._levelZeroMaximumGeometricError = undefined;
  this._layers = undefined;
  this._tileCredits = undefined;
}
<div class="notice">
To construct a CesiumTerrainProvider, call {@link CesiumTerrainProvider.fromIonAssetId} or {@link CesiumTerrainProvider.fromUrl}. Do not call the constructor directly.
</div>

A {@link TerrainProvider} that accesses terrain data in a Cesium terrain format.
Terrain formats can be one of the following:
<ul>
<li> {@link https://github.com/AnalyticalGraphicsInc/quantized-mesh Quantized Mesh} </li>
<li> {@link https://github.com/AnalyticalGraphicsInc/cesium/wiki/heightmap-1.0 Height Map} </li>
</ul>

@alias CesiumTerrainProvider
@constructor

@param {CesiumTerrainProvider.ConstructorOptions} [options] An object describing initialization options

@example
// Create Arctic DEM terrain with normals.
try {
  const viewer = new Cesium.Viewer("cesiumContainer", {
    terrainProvider: await Cesium.CesiumTerrainProvider.fromIonAssetId(3956, {
      requestVertexNormals: true
    })
  });
} catch (error) {
  console.log(error);
}

@see createWorldTerrain
@see CesiumTerrainProvider.fromUrl
@see CesiumTerrainProvider.fromIonAssetId
@see TerrainProvider