import type { LengthUnit } from "../../core/units.js";

/** @since 5.0 */
export interface AuthoringInfoStatistics {
  /**
   * The minimum data value of the attribute represented by the renderer. Legends displaying `above-and-below` themed data will not display values smaller than this number.
   *
   * @since 5.0
   */
  min: number;
  /**
   * The maximum data value of the attribute represented by the renderer. Legends displaying `above-and-below` themed data will not display values greater than this number.
   *
   * @since 5.0
   */
  max: number;
}

/** @since 5.0 */
export type AuthoringInfoTypes = "relationship" | "classed-size" | "classed-color" | "class-breaks-size" | "class-breaks-color" | "dot-density" | "predominance" | "univariate-color-size" | "flow";

/** @since 5.0 */
export type AuthoringInfoClassificationMethods = "equal-interval" | "defined-interval" | "manual" | "natural-breaks" | "quantile" | "standard-deviation";

/** @since 5.0 */
export type AuthoringInfoLengthUnits = Exclude<LengthUnit, "us-feet">;

/** @since 5.0 */
export type StandardDeviationInterval = 1 | 0.5 | 0.33 | 0.25;

/** @since 5.0 */
export type RelationshipFocus = "HH" | "LL" | "HL" | "LH";

/** @since 5.0 */
export type UnivariateTheme = "high-to-low" | "above-and-below" | "above" | "below";

/** @since 5.0 */
export type FlowTheme = "flow-line" | "wave-front";

/** @since 5.0 */
export type UnivariateSymbolStyle = "caret" | "circle-caret" | "arrow" | "circle-arrow" | "plus-minus" | "circle-plus-minus" | "square" | "circle" | "triangle" | "happy-sad" | "thumb" | "custom";

/** @since 5.0 */
export type AuthoringInfoVisualVariableTypes = "size" | "color" | "opacity" | "rotation";

/** @since 5.0 */
export type AuthoringInfoVisualVariableStyles = "percent" | "ratio" | "percent-of-total";

/** @since 5.0 */
export type AuthoringInfoColorVariableThemes = "high-to-low" | "above-and-below" | "centered-on" | "extremes" | "above" | "below";

/** @since 5.0 */
export type AuthoringInfoSizeVariableThemes = "high-to-low" | "above-and-below" | "above" | "below" | "reference-size" | "spike";

/** @since 5.0 */
export type AuthoringInfoVisualVariableThemes = AuthoringInfoColorVariableThemes | AuthoringInfoSizeVariableThemes;

/** @since 5.0 */
export type AuthoringInfoVisualVariableUnits = "seconds" | "minutes" | "hours" | "days" | "months" | "years";

/** @since 5.0 */
export type ReferenceSizeSymbolStyle = "circle" | "diamond" | "hexagon-flat" | "hexagon-pointy" | "square";

/** @since 5.0 */
export type SpikeSymbolStyle = "triangle-closed-outline" | "triangle-gradient-fill-closed" | "triangle-gradient-fill-closed-outline" | "triangle-gradient-fill-open" | "triangle-gradient-fill-open-outline" | "triangle-open-outline" | "triangle-solid-fill-closed" | "triangle-solid-fill-closed-outline" | "triangle-solid-fill-open" | "triangle-solid-fill-open-outline";

/** @since 5.0 */
export type RendererLegendOptionsOrder = "ascending-values" | "descending-values";

/** @since 5.0 */
export interface RendererLegendTitleOption {}