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

export interface AuthoringInfoStatistics {
  /** 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. */
  max: number;
  /** 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. */
  min: number;
}

export type AuthoringInfoTypes = "relationship" | "classed-size" | "classed-color" | "class-breaks-size" | "class-breaks-color" | "dot-density" | "predominance" | "univariate-color-size" | "flow";

export type AuthoringInfoClassificationMethods = "equal-interval" | "defined-interval" | "manual" | "natural-breaks" | "quantile" | "standard-deviation";

export type AuthoringInfoLengthUnits = Exclude<LengthUnit, "us-feet">;

export type StandardDeviationInterval = 1 | 0.5 | 0.33 | 0.25;

export type RelationshipFocus = "HH" | "LL" | "HL" | "LH";

export type UnivariateTheme = "high-to-low" | "above-and-below" | "above" | "below";

export type FlowTheme = "flow-line" | "wave-front";

export type UnivariateSymbolStyle = "caret" | "circle-caret" | "arrow" | "circle-arrow" | "plus-minus" | "circle-plus-minus" | "square" | "circle" | "triangle" | "happy-sad" | "thumb" | "custom";

export type AuthoringInfoVisualVariableTypes = "size" | "color" | "opacity";

export type AuthoringInfoVisualVariableStyles = "percent" | "ratio" | "percent-of-total";

export type AuthoringInfoColorVariableThemes = "high-to-low" | "above-and-below" | "centered-on" | "extremes" | "above" | "below";

export type AuthoringInfoSizeVariableThemes = "high-to-low" | "above-and-below" | "above" | "below" | "reference-size" | "spike";

export type AuthoringInfoVisualVariableThemes = AuthoringInfoColorVariableThemes | AuthoringInfoSizeVariableThemes;

export type AuthoringInfoVisualVariableUnits = "seconds" | "minutes" | "hours" | "days" | "months" | "years";

export type ReferenceSizeSymbolStyle = "circle" | "diamond" | "hexagon-flat" | "hexagon-pointy" | "square";

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";

export type RendererLegendOptionsOrder = "ascending-values" | "descending-values";

export interface RendererLegendTitleOption {}