import Transformable, { TransformProp } from './core/Transformable'; 
 | 
import { AnimationEasing } from './animation/easing'; 
 | 
import Animator from './animation/Animator'; 
 | 
import { ZRenderType } from './zrender'; 
 | 
import { Dictionary, ElementEventName, ZRRawEvent, BuiltinTextPosition, MapToType } from './core/types'; 
 | 
import Path from './graphic/Path'; 
 | 
import BoundingRect, { RectLike } from './core/BoundingRect'; 
 | 
import Eventful from './core/Eventful'; 
 | 
import ZRText from './graphic/Text'; 
 | 
import { TextPositionCalculationResult } from './contain/text'; 
 | 
import Polyline from './graphic/shape/Polyline'; 
 | 
import Group from './graphic/Group'; 
 | 
import Point from './core/Point'; 
 | 
export interface ElementAnimateConfig { 
 | 
    duration?: number; 
 | 
    delay?: number; 
 | 
    easing?: AnimationEasing; 
 | 
    during?: (percent: number) => void; 
 | 
    done?: Function; 
 | 
    aborted?: Function; 
 | 
    scope?: string; 
 | 
    force?: boolean; 
 | 
    additive?: boolean; 
 | 
    setToFinal?: boolean; 
 | 
} 
 | 
export interface ElementTextConfig { 
 | 
    position?: BuiltinTextPosition | (number | string)[]; 
 | 
    rotation?: number; 
 | 
    layoutRect?: RectLike; 
 | 
    offset?: number[]; 
 | 
    origin?: (number | string)[] | 'center'; 
 | 
    distance?: number; 
 | 
    local?: boolean; 
 | 
    insideFill?: string; 
 | 
    insideStroke?: string; 
 | 
    outsideFill?: string; 
 | 
    outsideStroke?: string; 
 | 
    inside?: boolean; 
 | 
} 
 | 
export interface ElementTextGuideLineConfig { 
 | 
    anchor?: Point; 
 | 
    showAbove?: boolean; 
 | 
    candidates?: ('left' | 'top' | 'right' | 'bottom')[]; 
 | 
} 
 | 
export interface ElementEvent { 
 | 
    type: ElementEventName; 
 | 
    event: ZRRawEvent; 
 | 
    target: Element; 
 | 
    topTarget: Element; 
 | 
    cancelBubble: boolean; 
 | 
    offsetX: number; 
 | 
    offsetY: number; 
 | 
    gestureEvent: string; 
 | 
    pinchX: number; 
 | 
    pinchY: number; 
 | 
    pinchScale: number; 
 | 
    wheelDelta: number; 
 | 
    zrByTouch: boolean; 
 | 
    which: number; 
 | 
    stop: (this: ElementEvent) => void; 
 | 
} 
 | 
export declare type ElementEventCallback<Ctx, Impl> = (this: CbThis<Ctx, Impl>, e: ElementEvent) => boolean | void; 
 | 
declare type CbThis<Ctx, Impl> = unknown extends Ctx ? Impl : Ctx; 
 | 
interface ElementEventHandlerProps { 
 | 
    onclick: ElementEventCallback<unknown, unknown>; 
 | 
    ondblclick: ElementEventCallback<unknown, unknown>; 
 | 
    onmouseover: ElementEventCallback<unknown, unknown>; 
 | 
    onmouseout: ElementEventCallback<unknown, unknown>; 
 | 
    onmousemove: ElementEventCallback<unknown, unknown>; 
 | 
    onmousewheel: ElementEventCallback<unknown, unknown>; 
 | 
    onmousedown: ElementEventCallback<unknown, unknown>; 
 | 
    onmouseup: ElementEventCallback<unknown, unknown>; 
 | 
    oncontextmenu: ElementEventCallback<unknown, unknown>; 
 | 
    ondrag: ElementEventCallback<unknown, unknown>; 
 | 
    ondragstart: ElementEventCallback<unknown, unknown>; 
 | 
    ondragend: ElementEventCallback<unknown, unknown>; 
 | 
    ondragenter: ElementEventCallback<unknown, unknown>; 
 | 
    ondragleave: ElementEventCallback<unknown, unknown>; 
 | 
    ondragover: ElementEventCallback<unknown, unknown>; 
 | 
    ondrop: ElementEventCallback<unknown, unknown>; 
 | 
} 
 | 
export interface ElementProps extends Partial<ElementEventHandlerProps>, Partial<Pick<Transformable, TransformProp>> { 
 | 
    name?: string; 
 | 
    ignore?: boolean; 
 | 
    isGroup?: boolean; 
 | 
    draggable?: boolean | 'horizontal' | 'vertical'; 
 | 
    silent?: boolean; 
 | 
    ignoreClip?: boolean; 
 | 
    globalScaleRatio?: number; 
 | 
    textConfig?: ElementTextConfig; 
 | 
    textContent?: ZRText; 
 | 
    clipPath?: Path; 
 | 
    drift?: Element['drift']; 
 | 
    extra?: Dictionary<unknown>; 
 | 
    anid?: string; 
 | 
} 
 | 
export declare const PRESERVED_NORMAL_STATE = "__zr_normal__"; 
 | 
declare const PRIMARY_STATES_KEYS: ["x" | "y" | "originX" | "originY" | "anchorX" | "anchorY" | "rotation" | "scaleX" | "scaleY" | "skewX" | "skewY", "ignore"]; 
 | 
export declare type ElementStatePropNames = (typeof PRIMARY_STATES_KEYS)[number] | 'textConfig'; 
 | 
export declare type ElementState = Pick<ElementProps, ElementStatePropNames> & ElementCommonState; 
 | 
export declare type ElementCommonState = { 
 | 
    hoverLayer?: boolean; 
 | 
}; 
 | 
export declare type ElementCalculateTextPosition = (out: TextPositionCalculationResult, style: ElementTextConfig, rect: RectLike) => TextPositionCalculationResult; 
 | 
interface Element<Props extends ElementProps = ElementProps> extends Transformable, Eventful<{ 
 | 
    [key in ElementEventName]: (e: ElementEvent) => void | boolean; 
 | 
} & { 
 | 
    [key in string]: (...args: any) => void | boolean; 
 | 
}>, ElementEventHandlerProps { 
 | 
} 
 | 
declare class Element<Props extends ElementProps = ElementProps> { 
 | 
    id: number; 
 | 
    type: string; 
 | 
    name: string; 
 | 
    ignore: boolean; 
 | 
    silent: boolean; 
 | 
    isGroup: boolean; 
 | 
    draggable: boolean | 'horizontal' | 'vertical'; 
 | 
    dragging: boolean; 
 | 
    parent: Group; 
 | 
    animators: Animator<any>[]; 
 | 
    ignoreClip: boolean; 
 | 
    __hostTarget: Element; 
 | 
    __zr: ZRenderType; 
 | 
    __dirty: number; 
 | 
    __isRendered: boolean; 
 | 
    __inHover: boolean; 
 | 
    private _clipPath?; 
 | 
    private _textContent?; 
 | 
    private _textGuide?; 
 | 
    textConfig?: ElementTextConfig; 
 | 
    textGuideLineConfig?: ElementTextGuideLineConfig; 
 | 
    anid: string; 
 | 
    extra: Dictionary<unknown>; 
 | 
    currentStates?: string[]; 
 | 
    prevStates?: string[]; 
 | 
    states: Dictionary<ElementState>; 
 | 
    stateTransition: ElementAnimateConfig; 
 | 
    stateProxy?: (stateName: string, targetStates?: string[]) => ElementState; 
 | 
    protected _normalState: ElementState; 
 | 
    private _innerTextDefaultStyle; 
 | 
    constructor(props?: Props); 
 | 
    protected _init(props?: Props): void; 
 | 
    drift(dx: number, dy: number, e?: ElementEvent): void; 
 | 
    beforeUpdate(): void; 
 | 
    afterUpdate(): void; 
 | 
    update(): void; 
 | 
    updateInnerText(forceUpdate?: boolean): void; 
 | 
    protected canBeInsideText(): boolean; 
 | 
    protected getInsideTextFill(): string | undefined; 
 | 
    protected getInsideTextStroke(textFill: string): string | undefined; 
 | 
    protected getOutsideFill(): string | undefined; 
 | 
    protected getOutsideStroke(textFill: string): string; 
 | 
    traverse<Context>(cb: (this: Context, el: Element<Props>) => void, context?: Context): void; 
 | 
    protected attrKV(key: string, value: unknown): void; 
 | 
    hide(): void; 
 | 
    show(): void; 
 | 
    attr(keyOrObj: Props): this; 
 | 
    attr<T extends keyof Props>(keyOrObj: T, value: Props[T]): this; 
 | 
    saveCurrentToNormalState(toState: ElementState): void; 
 | 
    protected _innerSaveToNormal(toState: ElementState): void; 
 | 
    protected _savePrimaryToNormal(toState: Dictionary<any>, normalState: Dictionary<any>, primaryKeys: readonly string[]): void; 
 | 
    hasState(): boolean; 
 | 
    getState(name: string): ElementState; 
 | 
    ensureState(name: string): ElementState; 
 | 
    clearStates(noAnimation?: boolean): void; 
 | 
    useState(stateName: string, keepCurrentStates?: boolean, noAnimation?: boolean, forceUseHoverLayer?: boolean): ElementState; 
 | 
    useStates(states: string[], noAnimation?: boolean, forceUseHoverLayer?: boolean): void; 
 | 
    isSilent(): boolean; 
 | 
    private _updateAnimationTargets; 
 | 
    removeState(state: string): void; 
 | 
    replaceState(oldState: string, newState: string, forceAdd: boolean): void; 
 | 
    toggleState(state: string, enable: boolean): void; 
 | 
    protected _mergeStates(states: ElementState[]): ElementState; 
 | 
    protected _applyStateObj(stateName: string, state: ElementState, normalState: ElementState, keepCurrentStates: boolean, transition: boolean, animationCfg: ElementAnimateConfig): void; 
 | 
    private _attachComponent; 
 | 
    private _detachComponent; 
 | 
    getClipPath(): Path<import("./graphic/Path").PathProps>; 
 | 
    setClipPath(clipPath: Path): void; 
 | 
    removeClipPath(): void; 
 | 
    getTextContent(): ZRText; 
 | 
    setTextContent(textEl: ZRText): void; 
 | 
    setTextConfig(cfg: ElementTextConfig): void; 
 | 
    removeTextConfig(): void; 
 | 
    removeTextContent(): void; 
 | 
    getTextGuideLine(): Polyline; 
 | 
    setTextGuideLine(guideLine: Polyline): void; 
 | 
    removeTextGuideLine(): void; 
 | 
    markRedraw(): void; 
 | 
    dirty(): void; 
 | 
    private _toggleHoverLayerFlag; 
 | 
    addSelfToZr(zr: ZRenderType): void; 
 | 
    removeSelfFromZr(zr: ZRenderType): void; 
 | 
    animate(key?: string, loop?: boolean, allowDiscreteAnimation?: boolean): Animator<any>; 
 | 
    addAnimator(animator: Animator<any>, key: string): void; 
 | 
    updateDuringAnimation(key: string): void; 
 | 
    stopAnimation(scope?: string, forwardToLast?: boolean): this; 
 | 
    animateTo(target: Props, cfg?: ElementAnimateConfig, animationProps?: MapToType<Props, boolean>): void; 
 | 
    animateFrom(target: Props, cfg: ElementAnimateConfig, animationProps?: MapToType<Props, boolean>): void; 
 | 
    protected _transitionState(stateName: string, target: Props, cfg?: ElementAnimateConfig, animationProps?: MapToType<Props, boolean>): void; 
 | 
    getBoundingRect(): BoundingRect; 
 | 
    getPaintRect(): BoundingRect; 
 | 
    calculateTextPosition: ElementCalculateTextPosition; 
 | 
    protected static initDefaultProps: void; 
 | 
} 
 | 
export default Element; 
 |