/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { IDeployCard, ISolutionInfoCard, ITemplateInfo } from "../../utils/interfaces.js";
import type { ITemplateInfoGraph } from "../solution-item-diagram/utils/solutionGraph.js";
import type { SolutionDeleteDialog } from "../solution-delete-dialog/customElement.js";
import type { T9nMeta } from "@arcgis/lumina/controllers";
import type { Dialog as Dialog } from "@esri/calcite-components/components/calcite-dialog";

export abstract class SolutionDeployedCard extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      builtWithAI: string;
      openSolution: string;
      deleteSolution: string;
      deployedDate: string;
      diagramTitle: string;
      documentation: string;
      moreActions: string;
      mustOwnSolution: string;
      owner: string;
      updateAvailable: string;
      viewDiagram: string;
      renameItems: string;
      viewItemDetails: string;
  } & T9nMeta<{
      builtWithAI: string;
      openSolution: string;
      deleteSolution: string;
      deployedDate: string;
      diagramTitle: string;
      documentation: string;
      moreActions: string;
      mustOwnSolution: string;
      owner: string;
      updateAvailable: string;
      viewDiagram: string;
      renameItems: string;
      viewItemDetails: string;
  }>;
  /** Key details about the solution */
  accessor card: ISolutionInfoCard | undefined;
  /** @default '' */
  accessor deployedDate: string;
  /** @default '' */
  accessor description: string;
  /**
   * Digram license key to use view the diagram
   *
   * @default ''
   */
  accessor diagramKey: string;
  /** @default '' */
  accessor heading: string;
  /** @default '' */
  accessor itemId: string;
  /** @default '' */
  accessor owner: string;
  /** ITemplateInfo[]: Collection of template infos */
  accessor templateInfos: ITemplateInfo[];
  /** @default '' */
  accessor thumbnail: string;
  /** @default false */
  accessor updateAvailable: boolean;
  /** Get the templates from the current card */
  getTemplates(): Promise<ITemplateInfoGraph[]>;
  /**
   * Show the delete dialog
   * This allows other components to leverage the logic that is built into this card.
   * It will return a reference to the dialog so the other component can respond to its events.
   */
  renderDeleteDialog(): Promise<SolutionDeleteDialog | undefined>;
  /**
   * Show the diagram dialog
   * This allows other components to leverage the logic that is built into this card.
   * It will return a reference to the dialog so the other component can respond to its events.
   *
   * @param evt
   */
  renderDiagramDialog(evt: MouseEvent): Promise<Dialog | undefined>;
  /** Emitted on demand when the details card is selected. */
  readonly deployedCardSelected: import("@arcgis/lumina").TargetedEvent<this, IDeployCard>;
  readonly "@eventTypes": {
    deployedCardSelected: SolutionDeployedCard["deployedCardSelected"]["detail"];
  };
}