import * as graphic from '../../util/graphic.js'; 
 | 
import { AxisPointer } from './AxisPointer.js'; 
 | 
import { AxisBaseModel } from '../../coord/AxisBaseModel.js'; 
 | 
import ExtensionAPI from '../../core/ExtensionAPI.js'; 
 | 
import Element from 'zrender/lib/Element.js'; 
 | 
import { VerticalAlign, HorizontalAlign, CommonAxisPointerOption } from '../../util/types.js'; 
 | 
import { PathProps } from 'zrender/lib/graphic/Path.js'; 
 | 
import Model from '../../model/Model.js'; 
 | 
import { TextProps } from 'zrender/lib/graphic/Text.js'; 
 | 
interface Transform { 
 | 
    x: number; 
 | 
    y: number; 
 | 
    rotation: number; 
 | 
} 
 | 
declare type AxisValue = CommonAxisPointerOption['value']; 
 | 
declare type AxisPointerModel = Model<CommonAxisPointerOption>; 
 | 
interface BaseAxisPointer { 
 | 
    /** 
 | 
     * Should be implemenented by sub-class if support `handle`. 
 | 
     */ 
 | 
    getHandleTransform(value: AxisValue, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): Transform; 
 | 
    /** 
 | 
     * * Should be implemenented by sub-class if support `handle`. 
 | 
     */ 
 | 
    updateHandleTransform(transform: Transform, delta: number[], axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): Transform & { 
 | 
        cursorPoint: number[]; 
 | 
        tooltipOption?: { 
 | 
            verticalAlign?: VerticalAlign; 
 | 
            align?: HorizontalAlign; 
 | 
        }; 
 | 
    }; 
 | 
} 
 | 
export interface AxisPointerElementOptions { 
 | 
    graphicKey: string; 
 | 
    pointer: PathProps & { 
 | 
        type: 'Line' | 'Rect' | 'Circle' | 'Sector'; 
 | 
    }; 
 | 
    label: TextProps; 
 | 
} 
 | 
/** 
 | 
 * Base axis pointer class in 2D. 
 | 
 */ 
 | 
declare class BaseAxisPointer implements AxisPointer { 
 | 
    private _group; 
 | 
    private _lastGraphicKey; 
 | 
    private _handle; 
 | 
    private _dragging; 
 | 
    private _lastValue; 
 | 
    private _lastStatus; 
 | 
    private _payloadInfo; 
 | 
    /** 
 | 
     * If have transition animation 
 | 
     */ 
 | 
    private _moveAnimation; 
 | 
    private _axisModel; 
 | 
    private _axisPointerModel; 
 | 
    private _api; 
 | 
    /** 
 | 
     * In px, arbitrary value. Do not set too small, 
 | 
     * no animation is ok for most cases. 
 | 
     */ 
 | 
    protected animationThreshold: number; 
 | 
    /** 
 | 
     * @implement 
 | 
     */ 
 | 
    render(axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel, api: ExtensionAPI, forceRender?: boolean): void; 
 | 
    /** 
 | 
     * @implement 
 | 
     */ 
 | 
    remove(api: ExtensionAPI): void; 
 | 
    /** 
 | 
     * @implement 
 | 
     */ 
 | 
    dispose(api: ExtensionAPI): void; 
 | 
    /** 
 | 
     * @protected 
 | 
     */ 
 | 
    determineAnimation(axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): boolean; 
 | 
    /** 
 | 
     * add {pointer, label, graphicKey} to elOption 
 | 
     * @protected 
 | 
     */ 
 | 
    makeElOption(elOption: AxisPointerElementOptions, value: AxisValue, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel, api: ExtensionAPI): void; 
 | 
    /** 
 | 
     * @protected 
 | 
     */ 
 | 
    createPointerEl(group: graphic.Group, elOption: AxisPointerElementOptions, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): void; 
 | 
    /** 
 | 
     * @protected 
 | 
     */ 
 | 
    createLabelEl(group: graphic.Group, elOption: AxisPointerElementOptions, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): void; 
 | 
    /** 
 | 
     * @protected 
 | 
     */ 
 | 
    updatePointerEl(group: graphic.Group, elOption: AxisPointerElementOptions, updateProps: (el: Element, props: PathProps) => void): void; 
 | 
    /** 
 | 
     * @protected 
 | 
     */ 
 | 
    updateLabelEl(group: graphic.Group, elOption: AxisPointerElementOptions, updateProps: (el: Element, props: PathProps) => void, axisPointerModel: AxisPointerModel): void; 
 | 
    /** 
 | 
     * @private 
 | 
     */ 
 | 
    _renderHandle(value: AxisValue): void; 
 | 
    private _moveHandleToValue; 
 | 
    private _onHandleDragMove; 
 | 
    /** 
 | 
     * Throttled method. 
 | 
     */ 
 | 
    _doDispatchAxisPointer(): void; 
 | 
    private _onHandleDragEnd; 
 | 
    /** 
 | 
     * @private 
 | 
     */ 
 | 
    clear(api: ExtensionAPI): void; 
 | 
    /** 
 | 
     * @protected 
 | 
     */ 
 | 
    doClear(): void; 
 | 
    buildLabel(xy: number[], wh: number[], xDimIndex: 0 | 1): { 
 | 
        x: number; 
 | 
        y: number; 
 | 
        width: number; 
 | 
        height: number; 
 | 
    }; 
 | 
} 
 | 
export default BaseAxisPointer; 
 |