import { Axes, AxesOptions } from './axes.js';
import { ZoomOptions } from '../Scale/scaleOptions.js';
import { Grid } from '../Grid/grid.js';
import { CartesianAxisOptions } from '../Axis/cartesianAxisOptions.js';
import { XAxis } from '../Axis/xAxis.js';
import { YAxis } from '../Axis/yAxis.js';
export type CartesianAxesIndex = {
    x: {
        axisIndex: number;
    };
    y: {
        axisIndex: number;
    };
};
export interface CartesianAxesOptions extends AxesOptions {
    x: CartesianAxisOptions[];
    y: CartesianAxisOptions[];
}
export interface DomainChangeEvent {
    axisIndex: 0 | 1;
    old: [number, number] | [Date, Date];
    new: [number, number] | [Date, Date];
    fromZoomReset: boolean;
}
export type CartesianAxesEventType = 'update:x-domain';
export type DomainChangeCallback = (event: DomainChangeEvent) => void;
export declare class CartesianAxes extends Axes {
    gridHandles: Record<string, Grid>;
    axisHandles: Record<string, XAxis | YAxis>;
    layers: any;
    xScales: Array<any>;
    yScales: Array<any>;
    xInitialExtent: Array<any>;
    yInitialExtent: Array<any>;
    clipPathId: string;
    xDomainCallbacks: DomainChangeCallback[];
    options: CartesianAxesOptions;
    private isDomainChangeFromZoomReset;
    constructor(container: HTMLElement, width: number | null, height: number | null, options: CartesianAxesOptions);
    get xScalesDomains(): Array<Array<number>>;
    get yScalesDomains(): Array<Array<number>>;
    addEventListener(_event: CartesianAxesEventType, callback: DomainChangeCallback): void;
    removeEventListener(_event: CartesianAxesEventType, callback: DomainChangeCallback): void;
    setDefaultAxisOptions(axisOptions: CartesianAxisOptions[], defaultOptions: CartesianAxisOptions): void;
    setOptions(options: Partial<CartesianAxesOptions>): void;
    createCanvas(): void;
    createMouseLayer(): void;
    updateCanvas(): void;
    updateMouseLayer(): void;
    setClipPath(): void;
    updateAxisScales(options: ZoomOptions, axisKey: keyof CartesianAxesOptions): void;
    chartsExtent(axisKey: keyof CartesianAxesOptions, axisIndex: number, options: ZoomOptions): any[];
    redraw(options?: {
        x?: ZoomOptions;
        y?: ZoomOptions;
    }): void;
    removeInitialExtent(): void;
    resetZoom(): void;
    atInitialExtent(domain: any, initialExtent: any): boolean;
    resize(): void;
    zoom(): void;
    update(): void;
    redrawAxes(): boolean;
    updateLabels(): void;
    getScale(axisKey: keyof CartesianAxesOptions, axisIndex: 0 | 1): any;
    setDomain(axisKey: keyof CartesianAxesOptions, axisIndex: 0 | 1, newDomain: [number, number] | [Date, Date]): void;
    protected initXScales(options: CartesianAxisOptions[]): void;
    protected initYScales(options: CartesianAxisOptions[]): void;
    protected setRange(): void;
    protected setRangeX(options: any): void;
    protected setRangeY(options: any): void;
    protected initAxisX(options: CartesianAxisOptions[]): void;
    protected initAxisY(options: CartesianAxisOptions[]): void;
    protected initLabels(): void;
}
