import * as graphic from '../../util/graphic.js';
import SeriesData from '../../data/SeriesData.js';
import { AnimationOption, ZRColor, AnimationOptionMixin } from '../../util/types.js';
import { SymbolDrawSeriesScope } from './SymbolDraw.js';
import Model from '../../model/Model.js';
interface SymbolOpts {
    disableAnimation?: boolean;
    useNameLabel?: boolean;
    symbolInnerColor?: ZRColor;
}
declare class Symbol extends graphic.Group {
    private _symbolType;
    /**
     * Original scale
     */
    private _sizeX;
    private _sizeY;
    private _z2;
    constructor(data: SeriesData, idx: number, seriesScope?: SymbolDrawSeriesScope, opts?: SymbolOpts);
    _createSymbol(symbolType: string, data: SeriesData, idx: number, symbolSize: number[], z2: number, keepAspect: boolean): void;
    /**
     * Stop animation
     * @param {boolean} toLastFrame
     */
    stopSymbolAnimation(toLastFrame: boolean): void;
    getSymbolType(): string;
    /**
     * FIXME:
     * Caution: This method breaks the encapsulation of this module,
     * but it indeed brings convenience. So do not use the method
     * unless you detailedly know all the implements of `Symbol`,
     * especially animation.
     *
     * Get symbol path element.
     */
    getSymbolPath(): import("../../util/symbol").ECSymbol;
    /**
     * Highlight symbol
     */
    highlight(): void;
    /**
     * Downplay symbol
     */
    downplay(): void;
    /**
     * @param {number} zlevel
     * @param {number} z
     */
    setZ(zlevel: number, z: number): void;
    setDraggable(draggable: boolean, hasCursorOption?: boolean): void;
    /**
     * Update symbol properties
     */
    updateData(data: SeriesData, idx: number, seriesScope?: SymbolDrawSeriesScope, opts?: SymbolOpts): void;
    _updateCommon(data: SeriesData, idx: number, symbolSize: number[], seriesScope?: SymbolDrawSeriesScope, opts?: SymbolOpts): void;
    setSymbolScale(scale: number): void;
    fadeOut(cb: () => void, seriesModel: Model<AnimationOptionMixin>, opt?: {
        fadeLabel: boolean;
        animation?: AnimationOption;
    }): void;
    static getSymbolSize(data: SeriesData, idx: number): [number, number];
    static getSymbolZ2(data: SeriesData, idx: number): number;
}
export default Symbol;
