///
import VueChartwerkPodMixin from './VueChartwerkPodMixin';
import { PodState } from './state';
import { Margin, TimeSerie, Options, TickOrientation, TimeFormat, BrushOrientation, AxisFormat, CrosshairOrientation, SvgElementAttributes, KeyEvent, PanOrientation, yAxisOrientation, ScrollPanOrientation, AxisOption } from './types';
import { palette } from './colors';
import * as d3 from 'd3';
declare abstract class ChartwerkPod {
protected readonly el: HTMLElement;
protected d3Node?: d3.Selection;
protected chartContainer?: d3.Selection;
protected customOverlay?: d3.Selection;
protected crosshair?: d3.Selection;
protected brush?: d3.BrushBehavior;
protected zoom?: any;
protected svg?: d3.Selection;
protected state?: PodState;
protected clipPath?: any;
protected isPanning: boolean;
protected isBrushing: boolean;
protected brushStartSelection: [number, number] | null;
protected initScaleX?: d3.ScaleLinear;
protected initScaleY?: d3.ScaleLinear;
protected initScaleY1?: d3.ScaleLinear;
protected xAxisElement?: d3.Selection;
protected yAxisElement?: d3.Selection;
protected y1AxisElement?: d3.Selection;
protected yAxisTicksColors?: string[];
private _clipPathUID;
protected series: T[];
protected options: O;
protected readonly d3: typeof d3;
protected deltaYTransform: number;
protected debouncedRender: import("lodash").DebouncedFunc;
private _xScale;
private _yScale;
private _y1Scale;
constructor(_d3: typeof d3, el: HTMLElement, _series: T[], _options: O);
protected addEventListeners(): void;
protected removeEventListeners(): void;
render(): void;
updateData(series?: T[], options?: O, shouldRerender?: boolean): void;
protected updateOptions(newOptions: O): void;
protected updateSeries(newSeries: T[]): void;
protected abstract renderMetrics(): void;
protected abstract onMouseOver(): void;
protected abstract onMouseOut(): void;
protected abstract onMouseMove(): void;
abstract renderSharedCrosshair(values: {
x?: number;
y?: number;
}): void;
abstract hideSharedCrosshair(): void;
protected initPodState(): void;
protected renderSvg(): void;
protected renderGrid(): void;
protected renderAxes(): void;
protected renderXAxis(): void;
protected renderYAxis(): void;
protected renderY1Axis(): void;
protected renderCrosshair(): void;
protected addEvents(): void;
protected initBrush(): void;
protected filterByKeyEvent(key: KeyEvent): () => boolean;
protected isD3EventKeyEqualOption(event: d3.D3ZoomEvent, optionsKeyEvent: KeyEvent): boolean;
protected initPan(): void;
protected renderClipPath(): void;
protected renderLegend(): void;
protected renderYLabel(): void;
protected renderXLabel(): void;
protected renderNoDataPointsMessage(): void;
protected onPanning(): void;
rescaleMetricAndAxis(event: d3.D3ZoomEvent): void;
protected onPanningRescale(event: d3.D3ZoomEvent): void;
protected onScrollPanningRescale(event: d3.D3ZoomEvent): void;
protected onPanningEnd(): void;
protected onBrush(): void;
protected getSelectionAttrs(selection: number[][]): SvgElementAttributes | undefined;
protected onBrushStart(): void;
protected onBrushEnd(): void;
protected zoomOut(): void;
get absXScale(): d3.ScaleLinear;
get absYScale(): d3.ScaleLinear;
get xScale(): d3.ScaleLinear;
get yScale(): d3.ScaleLinear;
protected get y1Scale(): d3.ScaleLinear;
filterSerieByYAxisOrientation(serie: T, orientation: yAxisOrientation): boolean;
get minValue(): number;
get maxValue(): number;
get y1MinValue(): number;
get y1MaxValue(): number;
get minValueX(): number;
get maxValueX(): number;
getd3TimeRangeEvery(count: number): d3.TimeInterval;
get serieTimestampRange(): number | undefined;
getAxisTicksFormatter(axisOptions: AxisOption): (d: any, i: number) => any;
get timeInterval(): number;
get xTickTransform(): string;
get extraMargin(): Margin;
get width(): number;
get height(): number;
get legendRowPositionY(): number;
get margin(): Margin;
get isSeriesUnavailable(): boolean;
formatedBound(alias: string, target: string): string;
protected clearScaleCache(shouldClearState?: boolean): void;
protected getSerieColor(idx: number): string;
protected get seriesTargetsWithBounds(): any[];
protected get visibleSeries(): any[];
protected get rectClipId(): string;
isOutOfChart(): boolean;
}
export { ChartwerkPod, VueChartwerkPodMixin, Margin, TimeSerie, Options, TickOrientation, TimeFormat, BrushOrientation, PanOrientation, AxisFormat, yAxisOrientation, CrosshairOrientation, ScrollPanOrientation, KeyEvent, palette };