import type SpatialReference from "../../geometry/SpatialReference.js";
import type TileInfo from "../support/TileInfo.js";
import type { TileInfoProperties } from "../support/TileInfo.js";

export interface ArcGISCachedServiceProperties {
  /** The copyright text as defined by the service. */
  copyright?: string | null;
  /** Contains information about the tiling scheme for the layer. */
  tileInfo?: TileInfoProperties;
}

/**
 * Mixin for [TileLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-TileLayer.html) and
 * [ElevationLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ElevationLayer.html).
 *
 * @since 4.0
 * @see [TileLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-TileLayer.html)
 * @see [ElevationLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ElevationLayer.html)
 */
export abstract class ArcGISCachedService {
  constructor(...args: any[]);
  /** The copyright text as defined by the service. */
  accessor copyright: string | null | undefined;
  /** The spatial reference of the layer as defined by the service. */
  get spatialReference(): SpatialReference;
  /** Contains information about the tiling scheme for the layer. */
  get tileInfo(): TileInfo;
  set tileInfo(value: TileInfoProperties);
}