import { EPostMessageType, EToolsKey } from "../enum";
import { IRectType, ISVGOptions } from "../types";
import type { Ellipse, Group, Label, Path, Polyline, Rect, Sprite, SpriteSvg } from "spritejs";
import { PencilOptions, PencilShape } from "./pencil";
import { LaserPenOptions, LaserPenShape } from "./laserPen";
import { EraserOptions, EraserShape } from "./eraser";
import { StarOptions, StarShape } from "./star";
import { SelectorOptions, SelectorShape } from "./selector";
import { ArrowOptions, ArrowShape } from "./arrow";
import { StraightOptions, StraightShape } from "./straight";
import { EllipseOptions, EllipseShape } from "./ellipse";
import { PolygonOptions, PolygonShape } from "./polygon";
import { RectangleOptions, RectangleShape } from "./rectangle";
import { VNodeManager } from "../vNodeManager";
import { SpeechBalloonOptions, SpeechBalloonShape } from "./speechBalloon";
import { TextShape } from "./text";
import { TextOptions } from "../../component/textEditor";
import { ImageOptions, ImageShape } from "./image";
import type { ServiceWorkForFullWorker } from "../worker/fullWorkerService";
import type { SubServiceThread } from "../mainThread/subServiceThread";
import { BaseShapeOptions, BaseShapeTool } from "./base";
import { PencilEraserOptions, PencilEraserShape } from "./pencilEraser";
import { BitMapEraserOptions, BitMapEraserShape } from "./pencilEraserBitMap";
import { ISvgShadowShape } from "./shadowSvg";
export type ShapeTools = typeof PencilShape | typeof LaserPenShape | typeof PencilEraserShape | typeof BitMapEraserShape | typeof EraserShape | typeof StarShape | typeof SelectorShape | typeof ArrowShape | typeof EllipseShape | typeof RectangleShape | typeof StarShape | typeof PolygonShape | typeof TextShape | typeof SpeechBalloonShape | typeof ImageShape | typeof ISvgShadowShape;
export type ShapeToolsClass = BaseShapeTool | PencilShape | LaserPenShape | PencilEraserShape | BitMapEraserShape | EraserShape | StarShape | SelectorShape | ArrowShape | EllipseShape | RectangleShape | StarShape | PolygonShape | TextShape | SpeechBalloonShape | ImageShape | ISvgShadowShape;
export type ShapeOptions = PencilOptions | LaserPenOptions | PencilEraserOptions | BitMapEraserOptions | EraserOptions | StarOptions | SelectorOptions | ArrowOptions | EllipseOptions | RectangleOptions | StarOptions | PolygonOptions | StraightOptions | TextOptions | SpeechBalloonOptions | ImageOptions | ISVGOptions;
export type ShapeNodes = Group | Path | Polyline | Rect | Ellipse | Sprite | Label | SpriteSvg;
export type ServiceThreadSubWork = SubServiceThread | ServiceWorkForFullWorker;
export type ShapeOptionsType<E extends BaseShapeOptions> = E;
export interface CombineConsumeResult {
    type: EPostMessageType;
    rect: IRectType | undefined;
    consumeIndex: number;
}
export interface ShapeStateInfo {
    willClear: boolean;
}
export declare function getShapeTools(toolsType: EToolsKey): typeof ArrowShape | typeof PencilShape | typeof StraightShape | typeof EllipseShape | typeof PolygonShape | typeof StarShape | typeof RectangleShape | typeof SpeechBalloonShape | typeof TextShape | typeof LaserPenShape | typeof EraserShape | typeof PencilEraserShape | typeof BitMapEraserShape | typeof SelectorShape | typeof ImageShape | typeof ISvgShadowShape | undefined;
export declare function getShapeInstance(param: {
    workId: string;
    toolsType: EToolsKey;
    toolsOpt: ShapeOptions;
    vNodes?: VNodeManager;
    fullLayer: Group;
    drawLayer?: Group;
}, serviceWork?: ServiceThreadSubWork): ArrowShape | PencilShape | StraightShape | EllipseShape | PolygonShape | StarShape | RectangleShape | SpeechBalloonShape | TextShape | LaserPenShape | EraserShape | PencilEraserShape | BitMapEraserShape | SelectorShape | ImageShape | ISvgShadowShape | undefined;
export declare function findShapeBody(nodes: ShapeNodes[]): ShapeNodes[];
