import { Chart } from '../Charts/chart.js';
import { Visitor } from '../Visitors/visitor.js';
import { Tooltip } from '../Tooltip/tooltip.js';
import { AxisOptions } from '../Axis/axisOptions.js';
import { D3Selection } from '../Utils';
export interface Margin {
    top?: number;
    right?: number;
    bottom?: number;
    left?: number;
}
export interface AxesOptions {
    transitionTime?: number;
    margin?: Margin;
    automargin?: boolean;
}
interface AxisIndexItem {
    key: string;
    axisIndex: number;
}
export interface AxisIndex {
    x?: AxisIndexItem;
    x1?: {
        key: string;
    };
    y?: AxisIndexItem;
    radial?: AxisIndexItem;
    angular?: AxisIndexItem;
    value?: {
        key: string;
    };
    color?: {
        key: string;
    };
}
export declare abstract class Axes {
    container: HTMLElement;
    svg: D3Selection<SVGSVGElement>;
    chartGroup: D3Selection<SVGGElement>;
    canvas: D3Selection<SVGGElement>;
    defs: D3Selection<SVGDefsElement>;
    tooltip: Tooltip;
    observer: ResizeObserver;
    private themeObserver;
    width: number;
    height: number;
    margin: {
        top: number;
        right: number;
        bottom: number;
        left: number;
    };
    options: AxesOptions;
    charts: Chart[];
    visitors: Visitor[];
    constructor(container: HTMLElement, width: number | null, height: number | null, options: AxesOptions, defaultOptions: any);
    setDefaultTimeOptions(axisOptions: AxisOptions | AxisOptions[]): void;
    setOptions(options: AxesOptions): void;
    setSize(height?: number, width?: number): void;
    resize(): void;
    abstract redraw(options?: any): void;
    resetZoom(): void;
    abstract update(): void;
    removeChart(id: string): void;
    removeAllCharts(): void;
    accept(v: Visitor): void;
    get extent(): any;
    createChartGroup(): void;
    protected abstract setRange(): void;
}
export {};
