/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { DeployAppTab, IActiveTab, IDeployCard, IDeployCardFetchFailed, ISolutionInfoCard, SortType } from "../../utils/interfaces.js";
import type { T9nMeta } from "@arcgis/lumina/controllers";

export abstract class SolutionsDeployApp extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      allSolutions: string;
      failedToOpen: string;
      failedToFetchWrongId: string;
      failedToFetchWrongPermissions: string;
      failedToFetchNotSolution: string;
      fetchingAllSolutions: string;
      mySolutions: string;
      solutionResources: string;
      resourcesGetStarted: string;
      resourcesDocumentation: string;
      resourcesNavigationMenuLabel: string;
      resourcesSupport: string;
      metaAllSolutionsTitle: string;
      metaAllSolutionsDescription: string;
      metaDeploymentsTitle: string;
      metaDeploymentsDescription: string;
      metaResourcesTitle: string;
      metaResourcesDescription: string;
      metaDetailsTitle: string;
      assistantFabTooltip: string;
      writableEnterprise: string;
      writableOnline: string;
  } & T9nMeta<{
      allSolutions: string;
      failedToOpen: string;
      failedToFetchWrongId: string;
      failedToFetchWrongPermissions: string;
      failedToFetchNotSolution: string;
      fetchingAllSolutions: string;
      mySolutions: string;
      solutionResources: string;
      resourcesGetStarted: string;
      resourcesDocumentation: string;
      resourcesNavigationMenuLabel: string;
      resourcesSupport: string;
      metaAllSolutionsTitle: string;
      metaAllSolutionsDescription: string;
      metaDeploymentsTitle: string;
      metaDeploymentsDescription: string;
      metaResourcesTitle: string;
      metaResourcesDescription: string;
      metaDetailsTitle: string;
      assistantFabTooltip: string;
      writableEnterprise: string;
      writableOnline: string;
  }>;
  /** App config to use when useLocalAppConfig is false */
  accessor appConfig: any;
  /** When defined this is the tab that should be loaded by default */
  accessor initTab: DeployAppTab | undefined;
  /**
   * When defined this will contain the solution name or id that should be loaded by default
   *
   * @default ''
   */
  accessor initTitleOrId: string;
  /**
   * Flag to enable/disable automatic loading of example builder design data.
   * Set to true for testing/development, false for production.
   *
   * @default false
   */
  accessor loadExampleBuilderData: boolean;
  /**
   * Define how the cards will be sorted
   *
   * @default 'relevance'
   */
  accessor sortType: SortType;
  /**
   * When true the local appConfig will be used over anything that was passed in.
   * This is used for local debugging.
   * When this is false authentication, locale, orgUrl, and portalUrl MUST be defined.
   *
   * @default false
   */
  accessor useLocalAppConfig: boolean;
  /**
   * Closes the dialog
   *
   * @param tab
   * @param filters
   */
  selectTab(tab: IActiveTab, filters: any): Promise<boolean>;
  /** Tab selected event */
  readonly deployAppTabSelected: import("@arcgis/lumina").TargetedEvent<this, DeployAppTab>;
  /** Deployed card fetch failed event */
  readonly deployedCardFetchFailed: import("@arcgis/lumina").TargetedEvent<this, IDeployCardFetchFailed>;
  /** Emitted on demand when the details card is selected. */
  readonly deployedCardSelected: import("@arcgis/lumina").TargetedEvent<this, IDeployCard>;
  /** Details card selected event */
  readonly detailsCardSelected: import("@arcgis/lumina").TargetedEvent<this, ISolutionInfoCard>;
  /** Emitted when meta tag strings are ready with translations */
  readonly metaTagStringsReady: import("@arcgis/lumina").TargetedEvent<this, {
      pageType: DeployAppTab;
      title: string;
      description: string;
      detailTemplate?: ISolutionInfoCard;
  }>;
  readonly sessionRefreshed: import("@arcgis/lumina").TargetedEvent<this, string>;
  readonly tabChanged: import("@arcgis/lumina").TargetedEvent<this, DeployAppTab>;
  readonly "@eventTypes": {
    deployAppTabSelected: SolutionsDeployApp["deployAppTabSelected"]["detail"];
    deployedCardFetchFailed: SolutionsDeployApp["deployedCardFetchFailed"]["detail"];
    deployedCardSelected: SolutionsDeployApp["deployedCardSelected"]["detail"];
    detailsCardSelected: SolutionsDeployApp["detailsCardSelected"]["detail"];
    metaTagStringsReady: SolutionsDeployApp["metaTagStringsReady"]["detail"];
    sessionRefreshed: SolutionsDeployApp["sessionRefreshed"]["detail"];
    tabChanged: SolutionsDeployApp["tabChanged"]["detail"];
  };
}