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

/**
 * Component which displays a slider to select a specific time of day or a range of times within a day.
 *
 * @internal
 */
export abstract class ArcgisTimeOfDaySlider extends LitElement {
  /**
   * Whether the slider is disabled.
   *
   * @default false
   */
  accessor disabled: boolean;
  /**
   * The end time of the time range in minutes since midnight.
   *
   * @default 0
   */
  accessor endTime: number;
  /** The label for the component. */
  accessor label: string | undefined;
  /** @internal */
  protected messages: { timeRange: string; } & T9nMeta<{ timeRange: string; }>;
  /**
   * The mode of the slider - single time or time range.
   *
   * @default "range"
   */
  accessor mode: Mode;
  /**
   * The start time of the time range in minutes since midnight.
   *
   * @default 0
   */
  accessor startTime: number;
  /** If specified, sets an incremental step for the slider. */
  accessor steps: number | undefined;
  /**
   * The scale of the component.
   *
   * @default "m"
   */
  accessor visualScale: "l" | "m" | "s" | undefined;
  /**
   * Emitted when the time is changed.
   *
   * @internal
   */
  readonly arcgisTimeChange: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    arcgisTimeChange: ArcgisTimeOfDaySlider["arcgisTimeChange"]["detail"];
  };
}

/** @internal */
export type Mode = "range" | "single";