import * as graphic from '../../util/graphic.js'; 
 | 
import SeriesData from '../../data/SeriesData.js'; 
 | 
import { StageHandlerProgressParams, LabelOption, SymbolOptionMixin, ItemStyleOption, ZRColor, AnimationOptionMixin, ZRStyleProps, StatesOptionMixin, BlurScope, DisplayState, DefaultEmphasisFocus } from '../../util/types.js'; 
 | 
import { CoordinateSystemClipArea } from '../../coord/CoordinateSystem.js'; 
 | 
import Model from '../../model/Model.js'; 
 | 
import Element from 'zrender/lib/Element.js'; 
 | 
import SeriesModel from '../../model/Series.js'; 
 | 
interface UpdateOpt { 
 | 
    isIgnore?(idx: number): boolean; 
 | 
    clipShape?: CoordinateSystemClipArea; 
 | 
    getSymbolPoint?(idx: number): number[]; 
 | 
    disableAnimation?: boolean; 
 | 
} 
 | 
interface SymbolLike extends graphic.Group { 
 | 
    updateData(data: SeriesData, idx: number, scope?: SymbolDrawSeriesScope, opt?: UpdateOpt): void; 
 | 
    fadeOut?(cb: () => void, seriesModel: SeriesModel): void; 
 | 
} 
 | 
interface SymbolLikeCtor { 
 | 
    new (data: SeriesData, idx: number, scope?: SymbolDrawSeriesScope, opt?: UpdateOpt): SymbolLike; 
 | 
} 
 | 
interface RippleEffectOption { 
 | 
    period?: number; 
 | 
    /** 
 | 
     * Scale of ripple 
 | 
     */ 
 | 
    scale?: number; 
 | 
    brushType?: 'fill' | 'stroke'; 
 | 
    color?: ZRColor; 
 | 
    /** 
 | 
     * ripple number 
 | 
     */ 
 | 
    number?: number; 
 | 
} 
 | 
interface SymbolDrawStateOption { 
 | 
    itemStyle?: ItemStyleOption; 
 | 
    label?: LabelOption; 
 | 
} 
 | 
export interface SymbolDrawItemModelOption extends SymbolOptionMixin<object>, StatesOptionMixin<SymbolDrawStateOption, { 
 | 
    emphasis?: { 
 | 
        focus?: DefaultEmphasisFocus; 
 | 
        scale?: boolean | number; 
 | 
    }; 
 | 
}>, SymbolDrawStateOption { 
 | 
    cursor?: string; 
 | 
    rippleEffect?: RippleEffectOption; 
 | 
} 
 | 
export interface SymbolDrawSeriesScope { 
 | 
    emphasisItemStyle?: ZRStyleProps; 
 | 
    blurItemStyle?: ZRStyleProps; 
 | 
    selectItemStyle?: ZRStyleProps; 
 | 
    focus?: DefaultEmphasisFocus; 
 | 
    blurScope?: BlurScope; 
 | 
    emphasisDisabled?: boolean; 
 | 
    labelStatesModels: Record<DisplayState, Model<LabelOption>>; 
 | 
    itemModel?: Model<SymbolDrawItemModelOption>; 
 | 
    hoverScale?: boolean | number; 
 | 
    cursorStyle?: string; 
 | 
    fadeIn?: boolean; 
 | 
} 
 | 
export declare type ListForSymbolDraw = SeriesData<Model<SymbolDrawItemModelOption & AnimationOptionMixin>>; 
 | 
declare class SymbolDraw { 
 | 
    group: graphic.Group; 
 | 
    private _data; 
 | 
    private _SymbolCtor; 
 | 
    private _seriesScope; 
 | 
    private _getSymbolPoint; 
 | 
    private _progressiveEls; 
 | 
    constructor(SymbolCtor?: SymbolLikeCtor); 
 | 
    /** 
 | 
     * Update symbols draw by new data 
 | 
     */ 
 | 
    updateData(data: ListForSymbolDraw, opt?: UpdateOpt): void; 
 | 
    updateLayout(): void; 
 | 
    incrementalPrepareUpdate(data: ListForSymbolDraw): void; 
 | 
    /** 
 | 
     * Update symbols draw by new data 
 | 
     */ 
 | 
    incrementalUpdate(taskParams: StageHandlerProgressParams, data: ListForSymbolDraw, opt?: UpdateOpt): void; 
 | 
    eachRendered(cb: (el: Element) => boolean | void): void; 
 | 
    remove(enableAnimation?: boolean): void; 
 | 
} 
 | 
export default SymbolDraw; 
 |