import type { IAreaGraphicAttribute, ICurveType, IGroupGraphicAttribute, ILineGraphicAttribute, IRectGraphicAttribute, ISymbolGraphicAttribute } from '@visactor/vrender-core';
import type { IPointLike } from '@visactor/vutils';
import type { IDelayType, OrientType } from '../interface';
import type { TagAttributes } from '../tag/type';
export declare enum DataZoomActiveTag {
    startHandler = "startHandler",
    endHandler = "endHandler",
    middleHandler = "middleHandler",
    background = "background"
}
export interface DataZoomAttributes extends IGroupGraphicAttribute {
    position: IPointLike;
    size: {
        width: number;
        height: number;
    };
    orient?: OrientType;
    start?: number;
    end?: number;
    backgroundStyle?: IRectGraphicAttribute;
    startHandlerStyle?: {
        triggerMinSize?: number;
    } & ISymbolGraphicAttribute;
    middleHandlerStyle?: {
        visible?: boolean;
        icon?: ISymbolGraphicAttribute;
        background?: {
            style?: IRectGraphicAttribute;
            size?: number;
        };
    };
    endHandlerStyle?: {
        triggerMinSize?: number;
    } & ISymbolGraphicAttribute;
    startTextStyle?: {
        formatMethod?: (text: string | number) => (string | number) | (string | number)[];
    } & Partial<TagAttributes>;
    endTextStyle?: {
        formatMethod?: (text: string | number) => (string | number) | (string | number)[];
    } & Partial<TagAttributes>;
    selectedBackgroundStyle?: IRectGraphicAttribute;
    dragMaskStyle?: IRectGraphicAttribute;
    backgroundChartStyle?: {
        line?: {
            visible?: boolean;
        } & ILineGraphicAttribute;
        area?: {
            visible?: boolean;
            curveType?: ICurveType;
        } & Omit<IAreaGraphicAttribute, 'curveType'>;
    };
    selectedBackgroundChartStyle?: {
        line?: {
            visible?: boolean;
        } & ILineGraphicAttribute;
        area?: {
            visible?: boolean;
            curveType?: ICurveType;
        } & Omit<IAreaGraphicAttribute, 'curveType'>;
    };
    showDetail?: 'auto' | boolean;
    brushSelect?: boolean;
    zoomLock?: boolean;
    minSpan?: number;
    maxSpan?: number;
    delayType?: IDelayType;
    delayTime?: number;
    realTime?: boolean;
    previewData?: any[];
    previewPointsX?: (datum: any) => number;
    previewPointsY?: (datum: any) => number;
    previewPointsX1?: (datum: any) => number;
    previewPointsY1?: (datum: any) => number;
    updateStateCallback?: (start: number, end: number) => any;
    disableTriggerEvent?: boolean;
    tolerance?: number;
    isReverse?: boolean;
}
export declare enum IDataZoomInteractiveEvent {
    stateUpdate = "stateUpdate",
    maskUpdate = "maskUpdate",
    dataZoomUpdate = "dataZoomUpdate"
}
export declare enum IDataZoomEvent {
    dataZoomChange = "dataZoomChange"
}
