import SvgTrack from '../svg-track';
import { LabelBounds } from './common';
import { DualScaleTrackOptions } from './interfaces';
import { Scale, D3Selection, Domain } from '../../common/interfaces';
import { InterpolatedScaleHandler } from '../../scale-handlers';
import { OnMountEvent, OnRescaleEvent, OnUpdateEvent } from '../interfaces';
/**
 * A scale track that supports interpolation between two
 * scale domains. Requires container to supply a scale handler
 * in the onMount event.
 *
 * The dual scale has a master/slave mode, which can be toggled
 * to change its behaviour (switch between domains), using the
 * scale-handler's setMode-function.
 */
export default class DualScaleTrack extends SvgTrack<DualScaleTrackOptions> {
    xscale: Scale;
    viewMode: number;
    scaleHandler: InterpolatedScaleHandler;
    ticks: number[];
    labelBounds: LabelBounds;
    constructor(id: string | number, options?: DualScaleTrackOptions);
    clearData(): void;
    /**
     * Allow triggering of update event without parameters
     */
    refresh(): void;
    /**
     * Override of onMount from base class
     */
    onMount(trackEvent: OnMountEvent): void;
    /**
     * Override of onRescale from base class
     */
    onRescale(trackEvent: OnRescaleEvent): void;
    /**
     * Override of onUpdate from base class
     */
    onUpdate(trackEvent: OnUpdateEvent): void;
    /**
     * Create scale tick intervals according to mode
     */
    createTicks(): void;
    /**
     * Create scale ruler ticks base on current mode and render
     */
    createRuler(g: D3Selection): void;
    /**
     * Create ticks for inverse mode
     */
    createMeasures(g: D3Selection): void;
    /**
     * Plot the scale track
     */
    plot(): void;
    /**
     * Getter for determining if the track is in master mode or not
     */
    get isMaster(): boolean;
    /**
     * Getter for scale extent according to mode
     */
    get extent(): Domain;
}
