import * as zrUtil from 'zrender/lib/core/util.js'; 
 | 
import * as modelUtil from '../../util/model.js'; 
 | 
import { ComponentOption, BoxLayoutOptionMixin, Dictionary, ZRStyleProps, OptionId, CommonTooltipOption, AnimationOptionMixin, AnimationOption } from '../../util/types.js'; 
 | 
import ComponentModel from '../../model/Component.js'; 
 | 
import Element, { ElementTextConfig } from 'zrender/lib/Element.js'; 
 | 
import Displayable from 'zrender/lib/graphic/Displayable.js'; 
 | 
import { PathProps, PathStyleProps } from 'zrender/lib/graphic/Path.js'; 
 | 
import { ImageStyleProps, ImageProps } from 'zrender/lib/graphic/Image.js'; 
 | 
import { TextStyleProps, TextProps } from 'zrender/lib/graphic/Text.js'; 
 | 
import GlobalModel from '../../model/Global.js'; 
 | 
import { TransitionOptionMixin } from '../../animation/customGraphicTransition.js'; 
 | 
import { ElementKeyframeAnimationOption } from '../../animation/customGraphicKeyframeAnimation.js'; 
 | 
import { GroupProps } from 'zrender/lib/graphic/Group.js'; 
 | 
import { TransformProp } from 'zrender/lib/core/Transformable.js'; 
 | 
import { ElementEventNameWithOn } from 'zrender/lib/core/types.js'; 
 | 
interface GraphicComponentBaseElementOption extends Partial<Pick<Element, TransformProp | 'silent' | 'ignore' | 'textConfig' | 'draggable' | ElementEventNameWithOn>>,  
 | 
/** 
 | 
 * left/right/top/bottom: (like 12, '22%', 'center', default undefined) 
 | 
 * If left/rigth is set, shape.x/shape.cx/position will not be used. 
 | 
 * If top/bottom is set, shape.y/shape.cy/position will not be used. 
 | 
 * This mechanism is useful when you want to position a group/element 
 | 
 * against the right side or the center of this container. 
 | 
 */ 
 | 
Partial<Pick<BoxLayoutOptionMixin, 'left' | 'right' | 'top' | 'bottom'>> { 
 | 
    /** 
 | 
     * element type, mandatory. 
 | 
     * Only can be omit if call setOption not at the first time and perform merge. 
 | 
     */ 
 | 
    type?: string; 
 | 
    id?: OptionId; 
 | 
    name?: string; 
 | 
    parentId?: OptionId; 
 | 
    parentOption?: GraphicComponentElementOption; 
 | 
    children?: GraphicComponentElementOption[]; 
 | 
    hv?: [boolean, boolean]; 
 | 
    /** 
 | 
     * bounding: (enum: 'all' (default) | 'raw') 
 | 
     * Specify how to calculate boundingRect when locating. 
 | 
     * 'all': Get uioned and transformed boundingRect 
 | 
     *     from both itself and its descendants. 
 | 
     *     This mode simplies confining a group of elements in the bounding 
 | 
     *     of their ancester container (e.g., using 'right: 0'). 
 | 
     * 'raw': Only use the boundingRect of itself and before transformed. 
 | 
     *     This mode is similar to css behavior, which is useful when you 
 | 
     *     want an element to be able to overflow its container. (Consider 
 | 
     *     a rotated circle needs to be located in a corner.) 
 | 
     */ 
 | 
    bounding?: 'raw' | 'all'; 
 | 
    /** 
 | 
     * info: custom info. enables user to mount some info on elements and use them 
 | 
     * in event handlers. Update them only when user specified, otherwise, remain. 
 | 
     */ 
 | 
    info?: GraphicExtraElementInfo; 
 | 
    clipPath?: Omit<GraphicComponentZRPathOption, 'clipPath'> | false; 
 | 
    textContent?: Omit<GraphicComponentTextOption, 'clipPath'>; 
 | 
    textConfig?: ElementTextConfig; 
 | 
    $action?: 'merge' | 'replace' | 'remove'; 
 | 
    tooltip?: CommonTooltipOption<unknown>; 
 | 
    enterAnimation?: AnimationOption; 
 | 
    updateAnimation?: AnimationOption; 
 | 
    leaveAnimation?: AnimationOption; 
 | 
} 
 | 
export interface GraphicComponentDisplayableOption extends GraphicComponentBaseElementOption, Partial<Pick<Displayable, 'zlevel' | 'z' | 'z2' | 'invisible' | 'cursor'>> { 
 | 
    style?: ZRStyleProps; 
 | 
    z2?: number; 
 | 
} 
 | 
export interface GraphicComponentGroupOption extends GraphicComponentBaseElementOption, TransitionOptionMixin<GroupProps> { 
 | 
    type?: 'group'; 
 | 
    /** 
 | 
     * width/height: (can only be pixel value, default 0) 
 | 
     * Only be used to specify contianer(group) size, if needed. And 
 | 
     * can not be percentage value (like '33%'). See the reason in the 
 | 
     * layout algorithm below. 
 | 
     */ 
 | 
    width?: number; 
 | 
    height?: number; 
 | 
    children: GraphicComponentElementOption[]; 
 | 
    keyframeAnimation?: ElementKeyframeAnimationOption<GroupProps> | ElementKeyframeAnimationOption<GroupProps>[]; 
 | 
} 
 | 
export interface GraphicComponentZRPathOption extends GraphicComponentDisplayableOption, TransitionOptionMixin<PathProps> { 
 | 
    shape?: PathProps['shape'] & TransitionOptionMixin<PathProps['shape']>; 
 | 
    style?: PathStyleProps & TransitionOptionMixin<PathStyleProps>; 
 | 
    keyframeAnimation?: ElementKeyframeAnimationOption<PathProps> | ElementKeyframeAnimationOption<PathProps>[]; 
 | 
} 
 | 
export interface GraphicComponentImageOption extends GraphicComponentDisplayableOption, TransitionOptionMixin<ImageProps> { 
 | 
    type?: 'image'; 
 | 
    style?: ImageStyleProps & TransitionOptionMixin<ImageStyleProps>; 
 | 
    keyframeAnimation?: ElementKeyframeAnimationOption<ImageProps> | ElementKeyframeAnimationOption<ImageProps>[]; 
 | 
} 
 | 
interface GraphicComponentTextOption extends Omit<GraphicComponentDisplayableOption, 'textContent' | 'textConfig'>, TransitionOptionMixin<TextProps> { 
 | 
    type?: 'text'; 
 | 
    style?: TextStyleProps & TransitionOptionMixin<TextStyleProps>; 
 | 
    keyframeAnimation?: ElementKeyframeAnimationOption<TextProps> | ElementKeyframeAnimationOption<TextProps>[]; 
 | 
} 
 | 
export declare type GraphicComponentElementOption = GraphicComponentGroupOption | GraphicComponentZRPathOption | GraphicComponentImageOption | GraphicComponentTextOption; 
 | 
declare type GraphicExtraElementInfo = Dictionary<unknown>; 
 | 
export declare type ElementMap = zrUtil.HashMap<Element, string>; 
 | 
export declare type GraphicComponentLooseOption = (GraphicComponentOption | GraphicComponentElementOption) & { 
 | 
    mainType?: 'graphic'; 
 | 
}; 
 | 
export interface GraphicComponentOption extends ComponentOption, AnimationOptionMixin { 
 | 
    elements?: GraphicComponentElementOption[]; 
 | 
} 
 | 
export declare function setKeyInfoToNewElOption(resultItem: ReturnType<typeof modelUtil.mappingToExists>[number], newElOption: GraphicComponentElementOption): void; 
 | 
export declare class GraphicComponentModel extends ComponentModel<GraphicComponentOption> { 
 | 
    static type: string; 
 | 
    type: string; 
 | 
    preventAutoZ: boolean; 
 | 
    static defaultOption: GraphicComponentOption; 
 | 
    /** 
 | 
     * Save el options for the sake of the performance (only update modified graphics). 
 | 
     * The order is the same as those in option. (ancesters -> descendants) 
 | 
     */ 
 | 
    private _elOptionsToUpdate; 
 | 
    mergeOption(option: GraphicComponentOption, ecModel: GlobalModel): void; 
 | 
    optionUpdated(newOption: GraphicComponentOption, isInit: boolean): void; 
 | 
    /** 
 | 
     * Convert 
 | 
     * [{ 
 | 
     *  type: 'group', 
 | 
     *  id: 'xx', 
 | 
     *  children: [{type: 'circle'}, {type: 'polygon'}] 
 | 
     * }] 
 | 
     * to 
 | 
     * [ 
 | 
     *  {type: 'group', id: 'xx'}, 
 | 
     *  {type: 'circle', parentId: 'xx'}, 
 | 
     *  {type: 'polygon', parentId: 'xx'} 
 | 
     * ] 
 | 
     */ 
 | 
    private _flatten; 
 | 
    useElOptionsToUpdate(): GraphicComponentElementOption[]; 
 | 
} 
 | 
export {}; 
 |