import Displayable, { DisplayableProps, CommonStyleProps, DisplayableStatePropNames } from './Displayable'; 
 | 
import Element, { ElementAnimateConfig } from '../Element'; 
 | 
import PathProxy from '../core/PathProxy'; 
 | 
import { PatternObject } from './Pattern'; 
 | 
import { Dictionary, PropType, MapToType } from '../core/types'; 
 | 
import BoundingRect from '../core/BoundingRect'; 
 | 
import { LinearGradientObject } from './LinearGradient'; 
 | 
import { RadialGradientObject } from './RadialGradient'; 
 | 
import Animator from '../animation/Animator'; 
 | 
export interface PathStyleProps extends CommonStyleProps { 
 | 
    fill?: string | PatternObject | LinearGradientObject | RadialGradientObject; 
 | 
    stroke?: string | PatternObject | LinearGradientObject | RadialGradientObject; 
 | 
    decal?: PatternObject; 
 | 
    strokePercent?: number; 
 | 
    strokeNoScale?: boolean; 
 | 
    fillOpacity?: number; 
 | 
    strokeOpacity?: number; 
 | 
    lineDash?: false | number[] | 'solid' | 'dashed' | 'dotted'; 
 | 
    lineDashOffset?: number; 
 | 
    lineWidth?: number; 
 | 
    lineCap?: CanvasLineCap; 
 | 
    lineJoin?: CanvasLineJoin; 
 | 
    miterLimit?: number; 
 | 
    strokeFirst?: boolean; 
 | 
} 
 | 
export declare const DEFAULT_PATH_STYLE: PathStyleProps; 
 | 
export declare const DEFAULT_PATH_ANIMATION_PROPS: MapToType<PathProps, boolean>; 
 | 
export interface PathProps extends DisplayableProps { 
 | 
    strokeContainThreshold?: number; 
 | 
    segmentIgnoreThreshold?: number; 
 | 
    subPixelOptimize?: boolean; 
 | 
    style?: PathStyleProps; 
 | 
    shape?: Dictionary<any>; 
 | 
    autoBatch?: boolean; 
 | 
    __value?: (string | number)[] | (string | number); 
 | 
    buildPath?: (ctx: PathProxy | CanvasRenderingContext2D, shapeCfg: Dictionary<any>, inBatch?: boolean) => void; 
 | 
} 
 | 
declare type PathKey = keyof PathProps; 
 | 
declare type PathPropertyType = PropType<PathProps, PathKey>; 
 | 
interface Path<Props extends PathProps = PathProps> { 
 | 
    animate(key?: '', loop?: boolean): Animator<this>; 
 | 
    animate(key: 'style', loop?: boolean): Animator<this['style']>; 
 | 
    animate(key: 'shape', loop?: boolean): Animator<this['shape']>; 
 | 
    getState(stateName: string): PathState; 
 | 
    ensureState(stateName: string): PathState; 
 | 
    states: Dictionary<PathState>; 
 | 
    stateProxy: (stateName: string) => PathState; 
 | 
} 
 | 
export declare type PathStatePropNames = DisplayableStatePropNames | 'shape'; 
 | 
export declare type PathState = Pick<PathProps, PathStatePropNames> & { 
 | 
    hoverLayer?: boolean; 
 | 
}; 
 | 
declare class Path<Props extends PathProps = PathProps> extends Displayable<Props> { 
 | 
    path: PathProxy; 
 | 
    strokeContainThreshold: number; 
 | 
    segmentIgnoreThreshold: number; 
 | 
    subPixelOptimize: boolean; 
 | 
    style: PathStyleProps; 
 | 
    autoBatch: boolean; 
 | 
    private _rectStroke; 
 | 
    protected _normalState: PathState; 
 | 
    protected _decalEl: Path; 
 | 
    shape: Dictionary<any>; 
 | 
    constructor(opts?: Props); 
 | 
    update(): void; 
 | 
    getDecalElement(): Path<PathProps>; 
 | 
    protected _init(props?: Props): void; 
 | 
    protected getDefaultStyle(): Props['style']; 
 | 
    protected getDefaultShape(): {}; 
 | 
    protected canBeInsideText(): boolean; 
 | 
    protected getInsideTextFill(): "#333" | "#ccc" | "#eee"; 
 | 
    protected getInsideTextStroke(textFill?: string): string; 
 | 
    buildPath(ctx: PathProxy | CanvasRenderingContext2D, shapeCfg: Dictionary<any>, inBatch?: boolean): void; 
 | 
    pathUpdated(): void; 
 | 
    getUpdatedPathProxy(inBatch?: boolean): PathProxy; 
 | 
    createPathProxy(): void; 
 | 
    hasStroke(): boolean; 
 | 
    hasFill(): boolean; 
 | 
    getBoundingRect(): BoundingRect; 
 | 
    contain(x: number, y: number): boolean; 
 | 
    dirtyShape(): void; 
 | 
    dirty(): void; 
 | 
    animateShape(loop: boolean): Animator<this["shape"]>; 
 | 
    updateDuringAnimation(targetKey: string): void; 
 | 
    attrKV(key: PathKey, value: PathPropertyType): void; 
 | 
    setShape(obj: Props['shape']): this; 
 | 
    setShape<T extends keyof Props['shape']>(obj: T, value: Props['shape'][T]): this; 
 | 
    shapeChanged(): boolean; 
 | 
    createStyle(obj?: Props['style']): Props["style"]; 
 | 
    protected _innerSaveToNormal(toState: PathState): void; 
 | 
    protected _applyStateObj(stateName: string, state: PathState, normalState: PathState, keepCurrentStates: boolean, transition: boolean, animationCfg: ElementAnimateConfig): void; 
 | 
    protected _mergeStates(states: PathState[]): PathState; 
 | 
    getAnimationStyleProps(): MapToType<PathProps, boolean>; 
 | 
    isZeroArea(): boolean; 
 | 
    static extend<Shape extends Dictionary<any>>(defaultProps: { 
 | 
        type?: string; 
 | 
        shape?: Shape; 
 | 
        style?: PathStyleProps; 
 | 
        beforeBrush?: Displayable['beforeBrush']; 
 | 
        afterBrush?: Displayable['afterBrush']; 
 | 
        getBoundingRect?: Displayable['getBoundingRect']; 
 | 
        calculateTextPosition?: Element['calculateTextPosition']; 
 | 
        buildPath(this: Path, ctx: CanvasRenderingContext2D | PathProxy, shape: Shape, inBatch?: boolean): void; 
 | 
        init?(this: Path, opts: PathProps): void; 
 | 
    }): { 
 | 
        new (opts?: PathProps & { 
 | 
            shape: Shape; 
 | 
        }): Path; 
 | 
    }; 
 | 
    protected static initDefaultProps: void; 
 | 
} 
 | 
export default Path; 
 |