constructor(options) {
    /**
     * @type {Options}
     */
    const config = options || {};

    super({
      state: 'loading',
      projection: config.projection,
      attributionsCollapsible: config.attributionsCollapsible,
      interpolate: config.interpolate,
      tileSize: config.tileSize || defaultTileSize,
      wrapX: config.wrapX !== undefined ? config.wrapX : true,
      transition: config.transition,
    });

    this.setLoader((x, y, z) => this.loadTile_(x, y, z, 1));

    /**
     * @type {Error|null}
     */
    this.error_ = null;

    /**
     * @type {string}
     * @private
     */
    this.evalscript_ = '';

    /**
     * @type {Array<ProcessRequestInputDataItem>|null}
     * @private
     */
    this.inputData_ = null;

    /**
     * @type {string}
     * @private
     */
    this.processUrl_ = config.url || defaultProcessUrl;

    /**
     * @type {string}
     * @private
     */
    this.token_ = '';

    /**
     * @type {ReturnType<typeof setTimeout>}
     * @private
     */
    this.tokenRenewalId_;

    if (config.auth) {
      this.setAuth(config.auth);
    }

    if (config.data) {
      this.setData(config.data);
    }

    if (config.evalscript) {
      this.setEvalscript(config.evalscript);
    }
  }
@param {Options} [options] Sentinel Hub options.