import { EventName, SeriesCategory } from './constants'; import Chart from './core/chart'; import { DataItem } from './models'; import Painter from './painter'; import Canvas from './renderer/canvas'; export interface Renderer { id: string; chart: Chart; render: () => void; } interface AtomComponentOptions { id?: string; name?: string; chart: Chart; canvas: Canvas; data?: DataItem[]; } export default abstract class AtomComponent implements Renderer { id: string; name: string; chart: Chart; protected canvas: Canvas; protected data: DataItem[]; protected painter: Painter; protected abstract seriesCategory: SeriesCategory; constructor({ id, name, chart, canvas, data, }: AtomComponentOptions); protected $on(eventName: EventName, callback: any): void; protected $emit(eventName: EventName, ...args: any[]): void; abstract render(): any; } export {};