import Dygraph from "dygraphs";
import { GraphCollection, ViewConfig } from "../../metadata/configurations";
export interface ReserveSpace {
    x: number;
    y: number;
    w: number;
    h: number;
}
export interface Layout {
    chart_div: HTMLDivElement;
    reserveSpaceLeft(px: number): ReserveSpace;
    reserveSpaceRight(px: number): ReserveSpace;
    reserveSpaceTop(px: number): ReserveSpace;
    reserveSpaceBottom(px: number): ReserveSpace;
    chartRect(): ReserveSpace;
}
export default class Toolbar {
    collectionSelectionListener: (collections: Array<GraphCollection>) => void;
    intervalSelectionListener: (collection: GraphCollection, dateWindow: [number, number]) => void;
    viewChangeListener: (view: ViewConfig) => void;
    reactSelectionListener?: ((active: boolean) => void) | undefined;
    colorFilterListener?: ((isLock: boolean) => void) | undefined;
    private g?;
    private readonly collectionOpts;
    private readonly viewConfig;
    private badges?;
    private exports?;
    private series?;
    private intervals?;
    private view?;
    private filter?;
    private extra?;
    private graphHeader?;
    private graphDiv?;
    private readonly views;
    constructor(view: ViewConfig, views: Array<ViewConfig>, collectionSelectionListener: (collections: Array<GraphCollection>) => void, intervalSelectionListener: (collection: GraphCollection, dateWindow: [number, number]) => void, viewChangeListener: (view: ViewConfig) => void, reactSelectionListener?: ((active: boolean) => void) | undefined, colorFilterListener?: ((isLock: boolean) => void) | undefined);
    activate: (graph: Dygraph) => {
        layout: (e: Layout) => void;
    };
    private reserveSpaceTop;
    private reserveSpaceTop0;
    private createExportBtns;
    private createView;
    private createInterval;
    private createSeries;
    private createFilter;
    private createExtraToolbar;
    /**
     * Add collection badge on graph.
     * @param g  "dygraph" instance
     * @param collections
     */
    private createCollectionBadges;
    /**
     * call this function to update all toolbar widgets
     * @param dateWindow
     */
    updateDateWindow: (dateWindow: number[], dateRange: number[]) => void;
    updateData: (collection: GraphCollection, labels: string[], data: any[]) => void;
}
