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

export interface WMTSStyleProperties extends JSONSupportMixinProperties, Partial<Pick<WMTSStyle, "description" | "id" | "legendUrl" | "title">> {}

/**
 * Contains information about the WMTS Style for [WMTSSublayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-WMTSSublayer.html).
 * Valid WMTS styles are advertised in WMTS service metadata (GetCapabilities response).
 *
 * @since 4.4
 */
export default class WMTSStyle extends JSONSupport {
  constructor(properties?: WMTSStyleProperties);
  /**
   * Description for the WMTS style.
   * This defaults to the value of the Abstract property from the WMTS GetCapabilities request.
   */
  accessor description: string | null | undefined;
  /** The unique ID assigned to the style. */
  accessor id: string;
  /**
   * The URL to the legend which gets used in [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-legend/).
   * This defaults to the value of the LegendURL property from the WMTS GetCapabilities request.
   */
  accessor legendUrl: string | null | undefined;
  /** The title of the WMTS style. */
  accessor title: string | null | undefined;
  /**
   * Creates a deep clone of the WMTSStyle.
   *
   * @returns A deep clone of the WMTSStyle instance that invoked this method.
   */
  clone(): WMTSStyle;
}