import { ChartPosition, ChartExtend, ArcPathItem } from '../../../types/vega-chart';
/**
 * defining an abstract class called `BaseRenderer` that takes a generic type `T` which
 * can be either an `SVGElement` or a `HTMLCanvasElement`
 */
export declare abstract class BaseRenderer<T extends SVGElement | HTMLCanvasElement> {
  protected context: T;
  /**
   * This is a constructor function that takes a parameter of type T and sets it as a protected property called "context".
   *
   * @param {unknown} context - The "context" parameter is a protected property of a class constructor that is
   * of type "T". It is used to store a reference to an object or data that is required by the class
   * methods to perform their tasks
   */
  constructor(context: T);
  abstract setLayout(width: number, height: number, top?: number, left?: number): void;
  abstract drawLine(from: ChartPosition, to: ChartPosition, color: string): void;
  abstract drawXAxis(extend: ChartExtend<unknown>, color: string, textStyle: string): void;
  abstract drawYAxis(extend: ChartExtend<unknown>, color: string, textStyle: string): void;
  abstract drawCircle(center: ChartPosition, radius: number, fillColor: string, strokeWidth: number, strokeColor: string): void;
  abstract drawText(position: ChartPosition, text: string, textStyle: string, textAnchor?: 'start' | 'middle' | 'end', rotate?: number): void;
  abstract drawRect(position: ChartPosition, width: number, height: number, color: string): void;
  abstract drawLinePath(positions: ChartPosition[], color: string): void;
  abstract drawArcPath(center: ChartPosition, record: ArcPathItem, color: string, outerRadius: number, innerRadius: number): SVGPathElement | HTMLCanvasElement;
  abstract drawLegend(position: ChartPosition, text: string, color: string, textStyle: string): SVGGElement | HTMLCanvasElement;
  abstract clear(): void;
}
