/// <reference path="../../index.d.ts" />
import type Graphic from "@arcgis/core/Graphic.js";
import type MapView from "@arcgis/core/views/MapView.js";
import type FeatureLayer from "@arcgis/core/layers/FeatureLayer.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class CreateRelatedFeature extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      provideDetailsMsg: string;
      loading: string;
  } & T9nMeta<{
      provideDetailsMsg: string;
      loading: string;
  }>;
  /**
   * boolean: Set this to true when have a custom submit button in the app.
   * This will hide the header and footer elements of the editor and user needs to execute the submit method manually.
   *
   * @default false
   */
  accessor customizeSubmit: boolean | undefined;
  /**
   * When true the snapping options will be exposed
   *
   * @default false
   */
  accessor enableSnapping: boolean;
  /** esri/views/MapView: https://developers.arcgis.com/javascript/latest/references/core/views/MapView */
  accessor mapView: MapView | undefined;
  /** Graphic: https://developers.arcgis.com/javascript/latest/references/core/Graphic */
  accessor selectedFeature: Graphic | undefined;
  /**
   * boolean: When true the notice message should be shown
   *
   * @default true
   */
  accessor showGuidingMsg: boolean | undefined;
  /** FeatureLayer: https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer */
  accessor table: FeatureLayer | undefined;
  /** Submit the comment */
  submit(): Promise<void>;
  /** Emitted on demand when the comment submission is failed */
  readonly fail: import("@arcgis/lumina").TargetedEvent<this, Error>;
  /** Emitted on demand when form is ready */
  readonly formReady: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted on demand when any action is pending or completed */
  readonly isActionPending: import("@arcgis/lumina").TargetedEvent<this, boolean>;
  /** Emitted on demand when the comment is submitted successfully */
  readonly success: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    fail: CreateRelatedFeature["fail"]["detail"];
    formReady: CreateRelatedFeature["formReady"]["detail"];
    isActionPending: CreateRelatedFeature["isActionPending"]["detail"];
    success: CreateRelatedFeature["success"]["detail"];
  };
}