/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { Scale } from "../interfaces.js";

/**
 * @cssproperty [--calcite-navigation-width] - Specifies the width of the component's content area.
 * @cssproperty [--calcite-navigation-background] - [Deprecated] in v3.0.0, removal target v6.0.0 - Use `--calcite-navigation-background-color` instead. Specifies the background color of the component.
 * @cssproperty [--calcite-navigation-background-color] - Specifies the component's background color.
 * @cssproperty [--calcite-navigation-border-color] - Specifies the component's border color.
 * @slot [logo] - A slot for adding a `calcite-logo` component to the primary navigation level.
 * @slot [user] - A slot for adding a `calcite-user` component to the primary navigation level.
 * @slot [progress] - A slot for adding a `calcite-progress` component to the primary navigation level.
 * @slot [navigation-action] - A slot for adding a `calcite-action` component to the primary navigation level.
 * @slot [content-start] - A slot for adding a `calcite-menu`, `calcite-action`, or other interactive elements in the start position of any navigation level.
 * @slot [content-center] - A slot for adding a `calcite-menu`, `calcite-action`, or other interactive elements in the center position of the primary navigation level.
 * @slot [content-end] - A slot for adding a `calcite-menu`, `calcite-action`, or other interactive elements in the end position of any navigation level.
 * @slot [navigation-secondary] - A slot for adding a `calcite-navigation` component in the secondary navigation level. Components rendered here will not display `calcite-navigation-logo` or `calcite-navigation-user` components.
 * @slot [navigation-tertiary] - A slot for adding a `calcite-navigation` component in the tertiary navigation level.  Components rendered here will not display `calcite-navigation-logo` or `calcite-navigation-user` components.
 */
export abstract class Navigation extends LitElement {
  /** When `navigationAction` is `true`, specifies an accessible label for the `calcite-action`. */
  accessor label: string;
  /**
   * When `true`, displays a `calcite-action` and emits a `calciteNavActionSelect` event on selection change.
   *
   * @default false
   */
  accessor navigationAction: boolean;
  /**
   * Specifies the size of the component.
   *
   * @default "m"
   */
  accessor scale: Scale;
  /**
   * When `navigationAction` is `true`, sets focus on the component's action element.
   *
   * @param options - When specified an optional object customizes the component's focusing process. When `preventScroll` is `true`, scrolling will not occur on the component.
   * @see [MDN - focus(options)](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#options)
   */
  setFocus(options?: FocusOptions): Promise<void>;
  /** When `navigationAction` is `true`, emits when the displayed action selection changes. */
  readonly calciteNavigationActionSelect: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    calciteNavigationActionSelect: Navigation["calciteNavigationActionSelect"]["detail"];
  };
}