import type Accessor from "../../../core/Accessor.js";
import type SketchLabelOptions from "./SketchLabelOptions.js";
import type SketchTooltipOptions from "./SketchTooltipOptions.js";
import type SketchValueOptions from "./SketchValueOptions.js";
import type { SketchLabelOptionsProperties } from "./SketchLabelOptions.js";
import type { SketchTooltipOptionsProperties } from "./SketchTooltipOptions.js";
import type { SketchValueOptionsProperties } from "./SketchValueOptions.js";

/** @internal */
export interface SketchOptionsProperties {
  /** @internal */
  labels?: SketchLabelOptionsProperties;
  /** @internal */
  tooltips?: SketchTooltipOptionsProperties;
  /** @internal */
  values?: SketchValueOptionsProperties;
}

/**
 * Class which groups all the settings used for sketching so that they can be passed around together.
 *
 * @internal
 */
export default class SketchOptions extends Accessor {
  /** @internal */
  constructor(properties?: SketchOptionsProperties);
  /** @internal */
  get labels(): SketchLabelOptions;
  set labels(value: SketchLabelOptionsProperties);
  /** @internal */
  get tooltips(): SketchTooltipOptions;
  set tooltips(value: SketchTooltipOptionsProperties);
  /** @internal */
  get values(): SketchValueOptions;
  set values(value: SketchValueOptionsProperties);
}