import { HashMap } from 'zrender/lib/core/util.js'; 
 | 
import AxisProxy from './AxisProxy.js'; 
 | 
import ComponentModel from '../../model/Component.js'; 
 | 
import { LayoutOrient, ComponentOption, LabelOption } from '../../util/types.js'; 
 | 
import Model from '../../model/Model.js'; 
 | 
import GlobalModel from '../../model/Global.js'; 
 | 
import { AxisBaseModel } from '../../coord/AxisBaseModel.js'; 
 | 
import { DataZoomAxisDimension } from './helper.js'; 
 | 
export interface DataZoomOption extends ComponentOption { 
 | 
    mainType?: 'dataZoom'; 
 | 
    /** 
 | 
     * Default auto by axisIndex 
 | 
     */ 
 | 
    orient?: LayoutOrient; 
 | 
    /** 
 | 
     * Default the first horizontal category axis. 
 | 
     */ 
 | 
    xAxisIndex?: number | number[]; 
 | 
    xAxisId?: string | string[]; 
 | 
    /** 
 | 
     * Default the first vertical category axis. 
 | 
     */ 
 | 
    yAxisIndex?: number | number[]; 
 | 
    yAxisId?: string | string[]; 
 | 
    radiusAxisIndex?: number | number[]; 
 | 
    radiusAxisId?: string | string[]; 
 | 
    angleAxisIndex?: number | number[]; 
 | 
    angleAxisId?: string | string[]; 
 | 
    singleAxisIndex?: number | number[]; 
 | 
    singleAxisId?: string | string[]; 
 | 
    /** 
 | 
     * Possible values: 'filter' or 'empty' or 'weakFilter'. 
 | 
     * 'filter': data items which are out of window will be removed. This option is 
 | 
     *         applicable when filtering outliers. For each data item, it will be 
 | 
     *         filtered if one of the relevant dimensions is out of the window. 
 | 
     * 'weakFilter': data items which are out of window will be removed. This option 
 | 
     *         is applicable when filtering outliers. For each data item, it will be 
 | 
     *         filtered only if all  of the relevant dimensions are out of the same 
 | 
     *         side of the window. 
 | 
     * 'empty': data items which are out of window will be set to empty. 
 | 
     *         This option is applicable when user should not neglect 
 | 
     *         that there are some data items out of window. 
 | 
     * 'none': Do not filter. 
 | 
     * Taking line chart as an example, line will be broken in 
 | 
     * the filtered points when filterModel is set to 'empty', but 
 | 
     * be connected when set to 'filter'. 
 | 
     */ 
 | 
    filterMode?: 'filter' | 'weakFilter' | 'empty' | 'none'; 
 | 
    /** 
 | 
     * Dispatch action by the fixed rate, avoid frequency. 
 | 
     * default 100. Do not throttle when use null/undefined. 
 | 
     * If animation === true and animationDurationUpdate > 0, 
 | 
     * default value is 100, otherwise 20. 
 | 
     */ 
 | 
    throttle?: number | null | undefined; 
 | 
    /** 
 | 
     * Start percent. 0 ~ 100 
 | 
     */ 
 | 
    start?: number; 
 | 
    /** 
 | 
     * End percent. 0 ~ 100 
 | 
     */ 
 | 
    end?: number; 
 | 
    /** 
 | 
     * Start value. If startValue specified, start is ignored 
 | 
     */ 
 | 
    startValue?: number | string | Date; 
 | 
    /** 
 | 
     * End value. If endValue specified, end is ignored. 
 | 
     */ 
 | 
    endValue?: number | string | Date; 
 | 
    /** 
 | 
     * Min span percent, 0 - 100 
 | 
     * The range of dataZoom can not be smaller than that. 
 | 
     */ 
 | 
    minSpan?: number; 
 | 
    /** 
 | 
     * Max span percent, 0 - 100 
 | 
     * The range of dataZoom can not be larger than that. 
 | 
     */ 
 | 
    maxSpan?: number; 
 | 
    minValueSpan?: number; 
 | 
    maxValueSpan?: number; 
 | 
    rangeMode?: ['value' | 'percent', 'value' | 'percent']; 
 | 
    realtime?: boolean; 
 | 
    textStyle?: LabelOption; 
 | 
} 
 | 
declare type RangeOption = Pick<DataZoomOption, 'start' | 'end' | 'startValue' | 'endValue'>; 
 | 
export declare type DataZoomExtendedAxisBaseModel = AxisBaseModel & { 
 | 
    __dzAxisProxy: AxisProxy; 
 | 
}; 
 | 
declare class DataZoomAxisInfo { 
 | 
    indexList: number[]; 
 | 
    indexMap: boolean[]; 
 | 
    add(axisCmptIdx: number): void; 
 | 
} 
 | 
export declare type DataZoomTargetAxisInfoMap = HashMap<DataZoomAxisInfo, DataZoomAxisDimension>; 
 | 
declare class DataZoomModel<Opts extends DataZoomOption = DataZoomOption> extends ComponentModel<Opts> { 
 | 
    static type: string; 
 | 
    type: string; 
 | 
    static dependencies: string[]; 
 | 
    static defaultOption: DataZoomOption; 
 | 
    private _autoThrottle; 
 | 
    private _orient; 
 | 
    private _targetAxisInfoMap; 
 | 
    private _noTarget; 
 | 
    /** 
 | 
     * It is `[rangeModeForMin, rangeModeForMax]`. 
 | 
     * The optional values for `rangeMode`: 
 | 
     * + `'value'` mode: the axis extent will always be determined by 
 | 
     *     `dataZoom.startValue` and `dataZoom.endValue`, despite 
 | 
     *     how data like and how `axis.min` and `axis.max` are. 
 | 
     * + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`, 
 | 
     *     where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`, 
 | 
     *     and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`. 
 | 
     *     Axis extent will be determined by the result of the percent of `[dMin, dMax]`. 
 | 
     * 
 | 
     * For example, when users are using dynamic data (update data periodically via `setOption`), 
 | 
     * if in `'value`' mode, the window will be kept in a fixed value range despite how 
 | 
     * data are appended, while if in `'percent'` mode, whe window range will be changed alone with 
 | 
     * the appended data (suppose `axis.min` and `axis.max` are not specified). 
 | 
     */ 
 | 
    private _rangePropMode; 
 | 
    /** 
 | 
     * @readonly 
 | 
     */ 
 | 
    settledOption: Opts; 
 | 
    init(option: Opts, parentModel: Model, ecModel: GlobalModel): void; 
 | 
    mergeOption(newOption: Opts): void; 
 | 
    private _doInit; 
 | 
    private _resetTarget; 
 | 
    private _fillSpecifiedTargetAxis; 
 | 
    private _fillAutoTargetAxisByOrient; 
 | 
    private _makeAutoOrientByTargetAxis; 
 | 
    private _setDefaultThrottle; 
 | 
    private _updateRangeUse; 
 | 
    noTarget(): boolean; 
 | 
    getFirstTargetAxisModel(): AxisBaseModel; 
 | 
    /** 
 | 
     * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel 
 | 
     */ 
 | 
    eachTargetAxis<Ctx>(callback: (this: Ctx, axisDim: DataZoomAxisDimension, axisIndex: number) => void, context?: Ctx): void; 
 | 
    /** 
 | 
     * @return If not found, return null/undefined. 
 | 
     */ 
 | 
    getAxisProxy(axisDim: DataZoomAxisDimension, axisIndex: number): AxisProxy; 
 | 
    /** 
 | 
     * @return If not found, return null/undefined. 
 | 
     */ 
 | 
    getAxisModel(axisDim: DataZoomAxisDimension, axisIndex: number): AxisBaseModel; 
 | 
    /** 
 | 
     * If not specified, set to undefined. 
 | 
     */ 
 | 
    setRawRange(opt: RangeOption): void; 
 | 
    setCalculatedRange(opt: RangeOption): void; 
 | 
    getPercentRange(): number[]; 
 | 
    /** 
 | 
     * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0); 
 | 
     * 
 | 
     * @return [startValue, endValue] value can only be '-' or finite number. 
 | 
     */ 
 | 
    getValueRange(axisDim: DataZoomAxisDimension, axisIndex: number): number[]; 
 | 
    /** 
 | 
     * @param axisModel If axisModel given, find axisProxy 
 | 
     *      corresponding to the axisModel 
 | 
     */ 
 | 
    findRepresentativeAxisProxy(axisModel?: AxisBaseModel): AxisProxy; 
 | 
    getRangePropMode(): DataZoomModel['_rangePropMode']; 
 | 
    getOrient(): LayoutOrient; 
 | 
} 
 | 
export default DataZoomModel; 
 |