/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { Scale } from "../interfaces.js";
import type { NumberingSystem } from "../../utils/locale.js";
import type { StepperItem } from "../calcite-stepper-item/customElement.js";
import type { StepperLayout } from "./interfaces.js";

/**
 * @cssproperty [--calcite-stepper-bar-gap] - Specifies the space between the component's `calcite-stepper-item`s.
 * @cssproperty [--calcite-stepper-bar-inactive-fill-color] - Specifies the `calcite-stepper-item`s' bar fill color of the component's `calcite-stepper-item`s.
 * @cssproperty [--calcite-stepper-bar-active-fill-color] - Specifies the `calcite-stepper-item`s' bar fill color of the component's active `calcite-stepper-item`s.
 * @cssproperty [--calcite-stepper-bar-complete-fill-color] - When `calcite-stepper-item`s are `complete`, specifies the component's `calcite-stepper-item`s' bar fill color.
 * @cssproperty [--calcite-stepper-bar-error-fill-color] - When `calcite-stepper-item`s contain an `error`, specifies the component's `calcite-stepper-item`s' bar fill color.
 * @slot  - A slot for adding `calcite-stepper-item`s.
 */
export abstract class Stepper extends LitElement {
  /**
   * When `true`, displays a status icon in the `calcite-stepper-item` heading.
   *
   * @default false
   */
  accessor icon: boolean;
  /**
   * Defines the component's layout.
   *
   * @default "horizontal"
   */
  accessor layout: StepperLayout;
  /** Overrides individual strings used by the component. */
  accessor messageOverrides: {
      label?: string;
      previousStep?: string;
      nextStep?: string;
  };
  /**
   * When `true`, displays the step number in the `calcite-stepper-item` heading.
   *
   * @default false
   */
  accessor numbered: boolean;
  /** Specifies the Unicode numeral system used by the component for localization. */
  accessor numberingSystem: NumberingSystem | undefined;
  /**
   * Specifies the component's size.
   *
   * @default "m"
   */
  accessor scale: Scale;
  /** Specifies the component's selected item. */
  get selectedItem(): StepperItem;
  /** Set the last `calcite-stepper-item` as active. */
  endStep(): Promise<void>;
  /**
   * Set a specified `calcite-stepper-item` as active.
   *
   * @param step
   */
  goToStep(step: number): Promise<void>;
  /** Set the next `calcite-stepper-item` as active. */
  nextStep(): Promise<void>;
  /** Set the previous `calcite-stepper-item` as active. */
  prevStep(): Promise<void>;
  /** Set the first `calcite-stepper-item` as active. */
  startStep(): Promise<void>;
  /** Fires when the active `calcite-stepper-item` changes. */
  readonly calciteStepperChange: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    calciteStepperChange: Stepper["calciteStepperChange"]["detail"];
  };
}