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

/**
 * The `SharedTemplateMetadata` class represents a minimal set of
 * information about a shared template. This is the information from
 * the the [`sharedTemplates/query` endpoint](https://developers.arcgis.com/rest/services-reference/enterprise/query-shared-templates/) of a feature service. By contrast, the [SharedTemplate](https://developers.arcgis.com/javascript/latest/references/core/editing/sharedTemplates/SharedTemplate/) class represents full information about a shared template, which is a larger payload obtained from the
 * [`sharedTemplates/templates`
 * endpoint](https://developers.arcgis.com/rest/services-reference/enterprise/fs-template/).
 * Use the `SharedTemplateMetadata` class when you
 * need only minimal information about many shared templates, such as when
 * populating a gallery or picker interface. Use the [SharedTemplate](https://developers.arcgis.com/javascript/latest/references/core/editing/sharedTemplates/SharedTemplate/) class when
 * you need full information about a specific template, such as when a
 * particular template has been selected for use in a feature creation workflow.
 *
 * @since 4.32
 * @see [SharedTemplate](https://developers.arcgis.com/javascript/latest/references/core/editing/sharedTemplates/SharedTemplate/)
 */
export default abstract class SharedTemplateMetadata extends JSONSupport {
  /** The template ID of the shared template. */
  accessor templateId: number;
  /**
   * The type of the shared template.
   *
   * @default "feature"
   */
  accessor type: SharedTemplateType;
}