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

/**
 * @cssproperty [--calcite-loader-font-size] - When `type` is not `"indeterminate"` or `inline`, specifies the font size of the loading percentage.
 * @cssproperty [--calcite-loader-size] - Specifies the component's width and height.
 * @cssproperty [--calcite-loader-size-inline] - [Deprecated] Use `--calcite-loader-size`. Specifies the width and height of the component when set to inline.
 * @cssproperty [--calcite-loader-spacing] - Specifies the the component's padding.
 * @cssproperty [--calcite-loader-progress-color-inline] - When `inline`, specifies the component's progress ring color.
 * @cssproperty [--calcite-loader-text-spacing] - When not `inline`, specifies the component's `text` margin.
 * @cssproperty [--calcite-loader-text-weight] - When not `inline` and `text` is provided, specifies the component's `text` font weight.
 * @cssproperty [--calcite-loader-text-color] - When not `inline` and `text` is provided, specifies the component's `text` color.
 * @cssproperty [--calcite-loader-progress-color] - When not `inline`, specifies the component's progress ring color.
 * @cssproperty [--calcite-loader-track-color] - Specifies the component's track color.
 */
export abstract class Loader extends LitElement {
  /**
   * When `true`, the component displays smaller.
   *
   * @default false
   */
  accessor inline: boolean;
  /**
   * Specifies an accessible label for the component.
   *
   * @required
   */
  accessor label: string;
  /** @internal */
  protected messages: Partial<Record<string, never>> & T9nMeta<Record<string, never>>;
  /**
   * Specifies the size of the component.
   *
   * @default "m"
   */
  accessor scale: Scale;
  /**
   * When not `inline`, displays text under the component's indicator.
   *
   * @default ""
   */
  accessor text: string;
  /**
   * Specifies the component type.
   *
   * Use `"indeterminate"` if finding actual progress value is impossible. Otherwise, use `"determinate"` to have the value indicate the progress or `"determinate-value"` to have the value label displayed along the progress.
   *
   * @default "indeterminate"
   */
  accessor type: "indeterminate" | "determinate" | "determinate-value";
  /**
   * The component's value. Valid only for `"determinate"` indicators. Percent complete of 100.
   *
   * @default 0
   */
  accessor value: number;
}