import type SharedTemplateMetadata from "./SharedTemplateMetadata.js";
import type { LoadableMixin } from "../../core/Loadable.js";
import type { EsriPromiseMixin } from "../../core/Promise.js";
import type { SharedTemplateType } from "./types.js";

/**
 * Represents a shared editing template. This is a type of template accessed
 * through the `sharedTemplates` resource on the feature service, as opposed to
 * "traditional" feature templates, which are defined in a layer's metadata.
 *
 * @since 4.32
 */
export default abstract class SharedTemplate<T extends any = any> extends SharedTemplateSuperclass {
  /**
   * The type of the template.
   *
   * @default "feature"
   */
  get type(): SharedTemplateType;
}
declare const SharedTemplateSuperclass: typeof SharedTemplateMetadata & typeof EsriPromiseMixin & typeof LoadableMixin