import type { IGroup, IImage, IRichText, ISymbol } from '@visactor/vrender-core';
import { AbstractComponent } from '../core/base';
import type { Tag } from '../tag';
import type { MarkerAnimationState, MarkerAttrs, MarkerExitAnimation, MarkerUpdateAnimation } from './type';
export declare abstract class Marker<T extends MarkerAttrs<AnimationAttr>, AnimationAttr> extends AbstractComponent<Required<T>> {
    name: string;
    private _containerClip;
    protected _container: IGroup;
    protected _label: Tag;
    static _animate?: (marker: any, label: Tag | IRichText | ISymbol | IImage, animationConfig: any, state: MarkerAnimationState) => void;
    defaultUpdateAnimation: MarkerUpdateAnimation<AnimationAttr>;
    defaultExitAnimation: MarkerExitAnimation;
    protected _animationConfig?: {
        enter: MarkerUpdateAnimation<AnimationAttr>;
        exit: MarkerExitAnimation;
        update: MarkerUpdateAnimation<AnimationAttr>;
    };
    private _lastHover;
    private _lastSelect;
    protected abstract setLabelPos(): any;
    protected abstract initMarker(container: IGroup): any;
    protected abstract updateMarker(): any;
    protected abstract isValidPoints(): any;
    protected abstract markerAnimate(state: MarkerAnimationState): void;
    private transAnimationConfig;
    setAttribute(key: string, value: any, forceUpdateTag?: boolean | undefined): void;
    private _bindEvent;
    private _releaseEvent;
    private _onHover;
    private _onUnHover;
    private _onClick;
    private _initContainer;
    private _updateContainer;
    protected render(): void;
    release(): void;
}
