/// <reference path="../../index.d.ts" />
import type portalPortal from "@arcgis/core/portal/Portal.js";
import type { Telemetry } from "@esri/telemetry";
import type { IConsentResponse } from "../../utils/interfaces.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class ConsentManager extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      accept: string;
      message: string;
      trackingAlertLabel: string;
  } & T9nMeta<{
      accept: string;
      message: string;
      trackingAlertLabel: string;
  }>;
  /**
   * string: The app id for the amazon tracking instance
   *
   * @default ''
   */
  accessor amazonAppId: string;
  /**
   * string: The app name for the amazon tracking instance
   *
   * @default ''
   */
  accessor amazonAppName: string;
  /**
   * string: The user pool id for the amazon tracking instance
   *
   * @default ''
   */
  accessor amazonUserPoolID: string;
  /**
   * string: The version for the amazon tracking instance
   *
   * @default ''
   */
  accessor amazonVersion: string;
  /**
   * string: The name to use for the variable stored in the browsers local storge that
   * will keep track of the users choice for consent
   * TODO: [MIGRATION] This property was marked as required in your Stencil component. If you didn't mean it to be required, feel free to remove `@required` tag.
   * Otherwise, read the documentation about required properties: https://qawebgis.esri.com/components/lumina/properties#string-properties
   *
   * @default ''
   * @required
   */
  accessor firstUseVar: string;
  /** string[]: Any ids for the analytics configured to receive events from the telemety instance */
  accessor measurementIds: string[];
  /** esri/portal/Portal: https://developers.arcgis.com/javascript/latest/api-reference/esri-portal-Portal.html */
  accessor portal: portalPortal | undefined;
  /** Initialize and return the telemetry instance if consent has been granted */
  getInstance(): Promise<Telemetry | undefined>;
  /** Emitted on demand when the user accepts or denies consent */
  readonly consentGranted: import("@arcgis/lumina").TargetedEvent<this, IConsentResponse>;
  readonly "@eventTypes": {
    consentGranted: ConsentManager["consentGranted"]["detail"];
  };
}