import { IWorkerMessage, IRectType, IUpdateNodeOpt } from "../types";
import { EDataType, EPostMessageType, EScaleType, EToolsKey, EvevtWorkState } from "../enum";
import { Point2d } from "../utils/primitives/Point2d";
import { BaseConsumeResultType, BaseShapeOptions, BaseShapeTool, BaseShapeToolProps } from "./base";
import { VNodeManager } from "../vNodeManager";
import { ShapeNodes } from "./utils";
import { EStrokeType } from "../../plugin/types";
export interface EllipseOptions extends BaseShapeOptions {
    thickness: number;
    strokeColor: string;
    fillColor: string;
    strokeType: EStrokeType;
}
export declare class EllipseShape extends BaseShapeTool {
    readonly canRotate: boolean;
    scaleType: EScaleType;
    readonly toolsType: EToolsKey;
    protected tmpPoints: Array<Point2d>;
    protected workOptions: EllipseOptions;
    oldRect?: IRectType;
    private syncTimestamp;
    constructor(props: BaseShapeToolProps);
    consume(props: {
        data: IWorkerMessage;
        isFullWork?: boolean;
        isSubWorker?: boolean;
        isMainThread?: boolean;
        smoothSync?: boolean;
        isSimpleWorker?: boolean;
    }): BaseConsumeResultType;
    consumeAll(): {
        type: EPostMessageType;
        removeIds: string[];
    } | {
        ops: string;
        isSync: boolean;
        updateNodeOpt: {
            useAnimation: boolean;
        };
        workId: string;
        toolsType: EToolsKey;
        opt: import("./utils").ShapeOptions;
        rect: IRectType;
        type: EPostMessageType;
        dataType: EDataType;
        removeIds?: undefined;
    };
    private draw;
    private computDrawPoints;
    private updateTempPoints;
    consumeService(props: {
        op: number[];
        isFullWork: boolean;
        workState?: EvevtWorkState;
    }): IRectType | undefined;
    clearTmpPoints(): void;
    static updateNodeOpt(param: {
        node: ShapeNodes;
        opt: IUpdateNodeOpt;
        vNodes: VNodeManager;
        willSerializeData?: boolean;
    }): IRectType | undefined;
}
