/// <reference types="node" />
import { EventEmitter } from 'events';
import { Annotation, ChartConfig, ChartSettings, GraphData, GraphDataMat, ZoomPanListenerType, ZoomPanType } from './types';
export declare class TradingChart {
    private dataMat;
    private dataWindowStartIndex?;
    private dataWindowEndIndex?;
    private config;
    private settings;
    private root;
    private table;
    private scaleRowMap;
    private mainCanvasMap;
    private mainUpdateCanvasMap;
    private scaleYCanvasMap;
    private scaleYUpdateCanvasMap;
    private scaleXCanvas;
    private scaleXUpdateCanvas;
    private zoomInterpolator;
    private panOffset;
    private panOffsetSaved;
    private d3xScale;
    private d3yScaleMap;
    private currentMouseDownStart?;
    private mousePosition?;
    private zoomEventEmitter;
    private panEventEmitter;
    private annotations;
    private data;
    constructor(_config: ChartConfig, _settings: Partial<ChartSettings>, theme?: 'light' | 'dark');
    initialize(): void;
    setConfig(_config: ChartConfig): void;
    updateTheme(theme: 'light' | 'dark'): void;
    private getColorPallet;
    setData(_data: GraphData): void;
    private recalculateData;
    setAnnotations(_annotations: Partial<Annotation>[]): void;
    getWindowedData(): GraphDataMat;
    private updateWindowFromZoomPan;
    zoom(step: number): void;
    zoomPanToRange(start: Date, end: Date): void;
    pan(dx: number, dy: number): void;
    updateSettings(_settings: Partial<ChartSettings>): void;
    private updateDomains;
    redrawMainCanvas(): void;
    private redrawUpdateCanvas;
    private clearUpdateCanvas;
    detach(): void;
    attach(domRoot: HTMLElement): void;
    on(event: ZoomPanType, listener: ZoomPanListenerType): EventEmitter;
    once(event: ZoomPanType, listener: ZoomPanListenerType): EventEmitter;
    off(event: ZoomPanType, listener: ZoomPanListenerType): EventEmitter;
    offAll(event: ZoomPanType): EventEmitter;
}
