function readGeometry(object, options) {
  if (!object) {
    return null;
  }
  /** @type {import("../geom/Geometry.js").Type} */
  let type;
  if (typeof object['x'] === 'number' && typeof object['y'] === 'number') {
    type = 'Point';
  } else if (object['points']) {
    type = 'MultiPoint';
  } else if (object['paths']) {
    const esriJSONPolyline = /** @type {EsriJSONPolyline} */ (object);
    if (esriJSONPolyline.paths.length === 1) {
      type = 'LineString';
    } else {
      type = 'MultiLineString';
    }
  } else if (object['rings']) {
    const esriJSONPolygon = /** @type {EsriJSONPolygon} */ (object);
    const layout = getGeometryLayout(esriJSONPolygon);
    const rings = convertRings(esriJSONPolygon.rings, layout);
    if (rings.length === 1) {
      type = 'Polygon';
      object = Object.assign({}, object, {['rings']: rings[0]});
    } else {
      type = 'MultiPolygon';
      object = Object.assign({}, object, {['rings']: rings});
    }
  }
  const geometryReader = GEOMETRY_READERS[type];
  return transformGeometryWithOptions(geometryReader(object), false, options);
}
@param {EsriJSONGeometry} object Object.
@param {import("./Feature.js").ReadOptions} [options] Read options.
@return {import("../geom/Geometry.js").default} Geometry.