import type { FederatedPointerEvent, IGroup } from '@visactor/vrender-core';
import type { IBoundsLike, IPointLike } from '@visactor/vutils';
import { AbstractComponent } from '../core/base';
import type { TagAttributes } from '../tag';
import { Tag } from '../tag';
import { DataZoomActiveTag } from './type';
import type { DataZoomAttributes } from './type';
import type { ComponentOptions } from '../interface';
export declare class DataZoom extends AbstractComponent<Required<DataZoomAttributes>> {
    name: string;
    static defaultAttributes: {
        orient: string;
        showDetail: string;
        brushSelect: boolean;
        zoomLock: boolean;
        minSpan: number;
        maxSpan: number;
        delayType: string;
        delayTime: number;
        realTime: boolean;
        backgroundStyle: {
            fill: string;
            stroke: string;
            lineWidth: number;
            cornerRadius: number;
        };
        dragMaskStyle: {
            fill: string;
            fillOpacity: number;
        };
        backgroundChartStyle: {
            area: {
                visible: boolean;
                stroke: string;
                lineWidth: number;
                fill: string;
            };
            line: {
                visible: boolean;
                stroke: string;
                lineWidth: number;
            };
        };
        selectedBackgroundStyle: {
            fill: string;
            fillOpacity: number;
        };
        selectedBackgroundChartStyle: {
            area: {
                visible: boolean;
                stroke: string;
                lineWidth: number;
                fill: string;
            };
            line: {
                visible: boolean;
                stroke: string;
                lineWidth: number;
            };
        };
        middleHandlerStyle: {
            visible: boolean;
            background: {
                size: number;
                style: {
                    fill: string;
                    stroke: string;
                    cornerRadius: number;
                };
            };
            icon: {
                size: number;
                fill: string;
                stroke: string;
                symbolType: string;
                lineWidth: number;
            };
        };
        startHandlerStyle: {
            visible: boolean;
            triggerMinSize: number;
            symbolType: string;
            fill: string;
            stroke: string;
            lineWidth: number;
        };
        endHandlerStyle: {
            visible: boolean;
            triggerMinSize: number;
            symbolType: string;
            fill: string;
            stroke: string;
            lineWidth: number;
        };
        startTextStyle: {
            padding: number;
            textStyle: {
                fontSize: number;
                fill: string;
            };
        };
        endTextStyle: {
            padding: number;
            textStyle: {
                fontSize: number;
                fill: string;
            };
        };
    };
    private _isHorizontal;
    private _background;
    private _container;
    private _startHandlerMask;
    private _startHandler;
    private _middleHandlerSymbol;
    private _middleHandlerRect;
    private _endHandlerMask;
    private _endHandler;
    private _selectedBackground;
    private _dragMask;
    private _startText;
    private _endText;
    private _startValue;
    private _endValue;
    private _showText;
    private _previewData;
    private _previewGroup;
    private _previewLine;
    private _previewArea;
    private _selectedPreviewGroupClip;
    private _selectedPreviewGroup;
    private _selectedPreviewLine;
    private _selectedPreviewArea;
    protected _activeTag: DataZoomActiveTag;
    protected _activeItem: any;
    protected _activeState: boolean;
    protected _activeCache: {
        startPos: IPointLike;
        lastPos: IPointLike;
    };
    protected _layoutCache: {
        attPos: 'x' | 'y';
        attSize: 'width' | 'height';
        max: number;
    };
    readonly state: {
        start: number;
        end: number;
    };
    protected _spanCache: number;
    private _previewPointsX;
    private _previewPointsY;
    private _previewPointsX1;
    private _previewPointsY1;
    private _statePointToData;
    private _layoutAttrFromConfig;
    setPropsFromAttrs(): void;
    constructor(attributes: DataZoomAttributes, options?: ComponentOptions);
    setAttributes(params: Partial<Required<DataZoomAttributes>>, forceUpdateTag?: boolean): void;
    protected bindEvents(): void;
    protected dragMaskSize(): number;
    protected setStateAttr(start: number, end: number, shouldRender: boolean): void;
    protected eventPosToStagePos(e: FederatedPointerEvent): {
        x: number;
        y: number;
    };
    private _onHandlerPointerDown;
    private _pointerMove;
    private _onHandlerPointerMove;
    private _onHandlerPointerUp;
    private _onHandlerPointerEnter;
    private _onHandlerPointerLeave;
    protected backgroundDragZoom(startPos: IPointLike, endPos: IPointLike): void;
    protected moveZoomWithMiddle(middle: number): void;
    protected renderDragMask(): void;
    protected isTextOverflow(componentBoundsLike: IBoundsLike, textBounds: IBoundsLike | null, layout: 'start' | 'end'): boolean;
    protected setTextAttr(startTextBounds: IBoundsLike, endTextBounds: IBoundsLike): void;
    protected renderText(): void;
    protected getLayoutAttrFromConfig(): any;
    protected render(): void;
    computeBasePoints(): {
        basePointStart: any;
        basePointEnd: any;
    };
    protected simplifyPoints(points: IPointLike[]): IPointLike[];
    protected getPreviewLinePoints(): any;
    protected getPreviewAreaPoints(): any;
    protected setPreviewAttributes(type: 'line' | 'area', group: IGroup): void;
    protected setSelectedPreviewAttributes(type: 'area' | 'line', group: IGroup): void;
    protected maybeAddLabel(container: IGroup, attributes: TagAttributes, name: string): Tag;
    setStartAndEnd(start?: number, end?: number): void;
    setPreviewData(data: any[]): void;
    setText(text: string, tag: 'start' | 'end'): void;
    getStartValue(): string | number;
    getEndTextValue(): string | number;
    getMiddleHandlerSize(): number;
    setPreviewPointsX(callback: (d: any) => number): void;
    setPreviewPointsY(callback: (d: any) => number): void;
    setPreviewPointsX1(callback: (d: any) => number): void;
    setPreviewPointsY1(callback: (d: any) => number): void;
    setStatePointToData(callback: (state: number) => any): void;
}
