import type { JSONSupport } from "../../core/JSONSupport.js";

/** @since 5.0 */
export interface RasterDataSourceProperties extends Partial<Pick<RasterDataSource, "dataSourceName" | "workspaceId">> {}

/**
 * A file-based raster that resides in a registered raster workspace. The raster may
 * only be displayed in the view, not queried or assigned a renderer.
 *
 * @since 5.0
 * @see [Sample - MapImageLayer: raster data source](https://developers.arcgis.com/javascript/latest/sample-code/layers-dynamicdatalayer-raster/)
 * @see [ArcGIS REST API - Raster data source](https://developers.arcgis.com/rest/services-reference/enterprise/data-source-object/#raster-data-source)
 * @example
 * let layer = new MapImageLayer({
 *   url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Elevation/GlacierBay/MapServer",
 *   sublayers: [{
 *     title: "slope",
 *     opacity: 0.75,
 *     source: {
 *       type: "data-layer",
 *       dataSource: {
 *         type: "raster",
 *         workspaceId: "MyDatabaseWorkspaceIDSSR2",
 *         dataSourceName: "slope.tiff"
 *       }
 *     }
 *   }]
 * });
 */
export default class RasterDataSource extends JSONSupport {
  constructor(properties?: RasterDataSourceProperties);
  /**
   * The name of the raster in the registered workspace.
   *
   * @since 5.0
   */
  accessor dataSourceName: string;
  /**
   * This value is always `raster`.
   *
   * @since 5.0
   */
  get type(): "raster";
  /**
   * The workspace where the raster resides as defined in the ArcGIS Server Manager.
   *
   * @since 5.0
   */
  accessor workspaceId: string;
}