import { ChartDrawerOptions } from '../../../types/vega-chart';
import { BaseRenderer } from '../renderers/base-renderer';
import { BackgroundColorsTokenType } from '../../../types/design-token.type';
import { BaseInteractor } from '../interactors/base-interactor';
/**
 * base drawer that provides a common structure for drawing charts using a renderer and options.
 */
export declare abstract class BaseDrawer<T> {
  protected renderer: BaseRenderer<SVGElement | HTMLCanvasElement>;
  protected interactor: BaseInteractor<SVGElement | HTMLCanvasElement>;
  protected options: ChartDrawerOptions<T>;
  /** return value of draw() */
  drawPiece: unknown;
  /**
   * This is a constructor function that takes in a renderer and options for a chart drawer.
   *
   * @param {BaseRenderer<SVGElement | HTMLCanvasElement>} renderer - `renderer` parameter is an instance of a `BaseRenderer` class that can render either SVG elements or a 2D canvas context
   * @param {BaseInteractor<SVGElement | HTMLCanvasElement>} interactor - `renderer` parameter is an instance of a `BaseInteractor` class
   * @param {ChartDrawerOptions<unknown>} options - where `T` is a generic type parameter. This parameter contains various options that can be used to customize the chart being drawn
   */
  constructor(renderer: BaseRenderer<SVGElement | HTMLCanvasElement>, interactor: BaseInteractor<SVGElement | HTMLCanvasElement>, options: ChartDrawerOptions<T>);
  /**
   * The function executes a draw method.
   */
  execute(): void;
  /**
   * returns a color token based on an index and an optional array of colors.
   *
   * @param {number} index - The index parameter is a number that represents the index of the color to be returned from the colors array.
   * @param {BackgroundColorsTokenType[]} [colors] - `colors` is an optional parameter of type `BackgroundColorsTokenType[]`
   * @returns {BackgroundColorsTokenType} color token
   */
  getColorByIndex(index: number, colors?: BackgroundColorsTokenType[]): BackgroundColorsTokenType;
  /**
   * This function takes a token representing a background color and returns the corresponding color value from a predefined mapping.
   *
   * @param {BackgroundColorsTokenType} token - a string representing the token for a background color
   * @returns {string} The string value returned is the color code
   */
  getColorFromToken(token: BackgroundColorsTokenType): string;
  /**
   * The function takes a token as input and returns the corresponding CSS style text from a predefined mapping.
   *
   * @param {string} token - The `token` parameter is a string that represents a specific style mapping
   * in the `FONTSTYLEMAPPING` object. The function returns the CSS style text associated with the given `token`.
   * @returns {string} a string that represents the CSS style associated with the input token. If the input token
   * matches a key in the `FONTSTYLEMAPPING` object, the corresponding CSS style string is returned.
   */
  getStyleTextFromToken(token: string): string;
  /** protected abstract draw(): unknown; */
  protected abstract draw(): unknown;
  /** protected abstract addInteractionSupport(drawPiece: unknown): void; */
  protected abstract addInteractionSupport(drawPiece: unknown): void;
}
