import { EventEmitter } from '../../stencil-public-runtime';
import { GlobalSlimmers } from '../../vega-slimmer/vega-slimmer-core';
import { EventEmitSlimmerBase } from '../../helpers/event-manager/slimmers/event-emit-slimmer';
import { DeprecatedPropertySlimmerBase } from '../../helpers/slimmers/deprecated-property-slimmer';
import { VegaComponentUsageRuntimeMetricsSlimmer } from '../../helpers/slimmers/component-usage-runtime-metrics';
import { VegaProgressTrackerRenderer } from './slimmers/renderers/vega-progress-tracker-renderer';
import { VegaProgressTrackerCurrentStepController } from './slimmers/controllers/vega-progress-tracker-current-step-controller';
import { ResponsiveType } from '../../types/ui.type';
import { VegaProgressTrackerStepItem, VegaProgressTrackerDirectionType } from './type';
import { InternalProgressTrackerStep } from './slimmers/controllers/dto/internal-progress-tracker-step';
import { SubStateNotifySlimmerBase } from '../../helpers/slimmers/sub-state/sub-state-notify-slimmer-base';
import { VegaProgressTrackerCurrentStepsController } from './slimmers/controllers/vega-progress-tracker-current-steps-controller';
import { VegaProgressTrackerRenderModeController } from './slimmers/controllers/vega-progress-tracker-render-mode-controller';
import { VegaProgressTrackerCurrentDirectionController } from './slimmers/controllers/vega-progress-tracker-current-direction-controller';
/**
 * @vegaVersion 1.0.7
 */
export declare class VegaProgressTracker {
  protected readonly globalSlimmers: GlobalSlimmers;
  protected renderModeController: VegaProgressTrackerRenderModeController;
  protected currentStepsController: VegaProgressTrackerCurrentStepsController;
  protected currentStepController: VegaProgressTrackerCurrentStepController;
  protected currentDirectionController: VegaProgressTrackerCurrentDirectionController;
  protected renderer: VegaProgressTrackerRenderer;
  protected currentStepUpdateEventEmitter: EventEmitSlimmerBase;
  protected currentStepsSubStateSlimmer: SubStateNotifySlimmerBase;
  protected readonly deprecatedPropertySlimmer: DeprecatedPropertySlimmerBase<string[]>;
  protected vegaComponentUsageRuntimeMetricsSlimmer: VegaComponentUsageRuntimeMetricsSlimmer<HTMLVegaProgressTrackerElement>;
  host: HTMLVegaProgressTrackerElement;
  currentSteps: InternalProgressTrackerStep[];
  watchCurrentSteps(): void;
  currentDirection: VegaProgressTrackerDirectionType;
  /**
   * Indicates the current step or stage in a
   *    sequential process or workflow,
   *    starting from 0.
   *
   * @vegaVersion 1.0.7
   */
  current: number;
  /**
   * The below method is e2e-test covered in
   * @see{module:vega-progress-tracker-e2e-change-current-mobile}
   */
  watchCurrentChange(): Promise<void>;
  /**
   * Specifies the direction of the Progress Tracker component.
   *
   * It can be set to either horizontal or vertical.
   *    In the horizontal direction, the tracker is divided into
   *    panes with navigable arrows. In the vertical direction,
   *    it is displayed as a single pane.
   * It also can be set as ResponsiveType for responsive direction.
   *
   * @vegaVersion 1.0.7
   */
  direction: ResponsiveType<VegaProgressTrackerDirectionType>;
  watchDirection(): Promise<void>;
  /**
   * Specifies an array of step subtitles for
   *    the Progress Tracker component.
   *
   * Each subtitle corresponds to a step in the
   *    progression of the workflow or process.
   *
   * @vegaVersion 1.3.0
   */
  steps: string[] | VegaProgressTrackerStepItem[];
  watchSteps(): void;
  /**
   * Specifies an array of completed step titles for
   *    the Progress Tracker component.
   *
   * Each completed step title represents a step that
   *    has been successfully completed in the
   *    workflow or process.
   * @deprecated This property will be removed soon and replaced by prop completedSteps
   *
   * @vegaVersion 1.5.0
   */
  completedStepArray: string[];
  watchCompletedStepArray(): void;
  /**
   * Specifies an array of titles representing completed steps in the progress tracker,
   *    indicating successful completion within the workflow or process.
   *
   * @vegaVersion 2.2.0
   */
  completedSteps: string[];
  watchCompletedSteps(): void;
  /**
   * Enables the ability to click on the steps in
   *    the Progress Tracker component.
   *
   * @vegaVersion 1.5.0
   */
  canClickStep: boolean;
  /**
   * When enabled, `current = -1` becomes a valid state that indicates
   *    no highlighted/current step (e.g. all steps are pending or the
   *    workflow has not started).
   *
   * Two ways to enter this state:
   * - Set the `current` prop to `-1`.
   * - Call the `setCurrent(-1)` method.
   *
   * @VegaHint `prevStep()` still clamps at `0` and will not take `current`
   *    into `-1`.
   *
   * @vegaVersion 2.82.0
   */
  allowNoCurrentStep: boolean;
  /**
   * An event emitter notifying that the current step has changed.
   *
   * @vegaVersion 1.5.0
   */
  vegaCurrentStepUpdate: EventEmitter<string>;
  /**
   * An event emitter notifying that the current step has changed.
   *
   * @eventSemantics namespace:native
   * @vegaVersion 2.0.0
   */
  currentStepUpdate: EventEmitter<string>;
  /**
   * Invoke this method to change the tracker's current step
   *    to the next step, if available.
   *
   * @vegaVersion 1.5.0
   */
  nextStep(): Promise<void>;
  /**
   * Invoke this method to change the tracker's current step
   *    to the previous step, if available.
   *
   * @vegaVersion 1.5.0
   */
  prevStep(): Promise<void>;
  /**
   * Invoke this method to set the current step of the tracker.
   *
   * @vegaVersion 1.0.7
   */
  setCurrent(step: number): Promise<void>;
  /**
   * Invoke this method to retrieve the tracker's current step.
   *
   * @vegaVersion 1.3.0
   */
  getCurrent(): Promise<number>;
  render(): VegaProgressTracker;
}
