import type { Maybe, RenderMode } from '../../../typings';
import type { TooltipData, ITooltipActual, TooltipActiveType, ITooltipHandler, ITooltipPositionActual } from '../../../typings/tooltip';
import type { IGroup } from '@visactor/vrender-core';
import type { IContainerSize } from '@visactor/vrender-components';
import type { IChartOption } from '../../../chart/interface';
import type { ITooltipSpec, Tooltip, TooltipHandlerParams } from '../../../component/tooltip';
import { TooltipResult } from '../../../component/tooltip';
import type { IComponentPlugin, IComponentPluginService } from '../interface';
import { BasePlugin } from '../../base/base-plugin';
import type { ITooltipHandlerOptions } from './interface';
import type { ICompiler } from '../../../compile/interface/compilable-item';
type ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult;
type ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => TooltipResult;
export declare abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {
    static readonly pluginType: 'component';
    static readonly specKey = "tooltip";
    readonly type: string;
    protected _visible: boolean;
    protected _option: ITooltipHandlerOptions;
    protected _chartOption: IChartOption;
    protected _env: RenderMode;
    get env(): "desktop-browser" | "mobile-browser" | "node" | "worker" | "miniApp" | "wx" | "tt" | "harmony" | "desktop-miniApp" | "lynx";
    protected _component: Tooltip;
    protected _chartContainer: Maybe<HTMLElement>;
    protected _compiler: ICompiler;
    protected _container: Maybe<IGroup | HTMLElement>;
    protected _isReleased: boolean;
    onAdd(service: IComponentPluginService<any>): void;
    showTooltip: (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => TooltipResult;
    protected changeTooltip: ChangeTooltipFunc;
    protected changeTooltipPosition: ChangeTooltipPositionFunc;
    hideTooltip(params: TooltipHandlerParams): TooltipResult;
    release(): void;
    protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void;
    protected abstract _removeTooltip(): void;
    protected abstract _getTooltipBoxSize(actualTooltip: ITooltipActual, changePositionOnly: boolean): IContainerSize | undefined;
    protected _getDefaultOption(): ITooltipHandlerOptions;
    protected _getActualTooltipPosition: (actualTooltip: ITooltipActual, params: TooltipHandlerParams, tooltipBoxSize: IContainerSize | undefined) => ITooltipPositionActual;
    protected _getParentElement(spec: ITooltipSpec): HTMLElement;
    getTooltipContainer(): IGroup | HTMLElement;
    protected _initFromSpec(): void;
    reInit(): void;
}
export {};
