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

export abstract class SolutionsDeployAppNav extends LitElement {
  /**
   * Contains the translations for this component.
   * All UI strings should be defined here.
   *
   * @internal
   */
  protected _translations: {
      allSolutions: string;
      arcgisSolutions: string;
      linkToArcGISSolutionsHomePage: string;
      linkToEsriHomePage: string;
      myContent: string;
      myDeployments: string;
      signIn: string;
      signOut: string;
      userSettings: string;
      solutionResources: string;
  } & T9nMeta<{
      allSolutions: string;
      arcgisSolutions: string;
      linkToArcGISSolutionsHomePage: string;
      linkToEsriHomePage: string;
      myContent: string;
      myDeployments: string;
      signIn: string;
      signOut: string;
      userSettings: string;
      solutionResources: string;
  }>;
  /** App config */
  accessor appConfig: any;
  /**
   * When true the assistant panel is open and the sub-nav should be constrained
   *
   * @default false
   */
  accessor assistantOpen: boolean;
  /** When defined this is the tab that should be loaded by default */
  accessor initTab: DeployAppTab | undefined;
  /**
   * Use to set the active state for all nav menu items
   *
   * @param tab
   * @param emit
   */
  activateMenuItem(tab: DeployAppTab, emit?: boolean): void;
  /** Use to clear the active state from all nav menu items */
  clearMenuItems(): void;
  /** Emitted on demand when the auth is initialized */
  readonly authInit: import("@arcgis/lumina").TargetedEvent<this, IAppConfig>;
  /** Tab selected event */
  readonly navTabSelected: import("@arcgis/lumina").TargetedEvent<this, INavTab>;
  /** Emitted on load when we load the first tab */
  readonly tabChanged: import("@arcgis/lumina").TargetedEvent<this, DeployAppTab>;
  /** Emitted on demand when the auth token is updated */
  readonly tokenRefreshed: import("@arcgis/lumina").TargetedEvent<this, string>;
  readonly "@eventTypes": {
    authInit: SolutionsDeployAppNav["authInit"]["detail"];
    navTabSelected: SolutionsDeployAppNav["navTabSelected"]["detail"];
    tabChanged: SolutionsDeployAppNav["tabChanged"]["detail"];
    tokenRefreshed: SolutionsDeployAppNav["tokenRefreshed"]["detail"];
  };
}