import { FabricShapeData } from "../fabricshape"; import { ShapeObject } from "./ShapeObject"; import { DrawingShapeDefinition, TooltipCallbacks } from "../../models"; import { MultilingualString } from "@omnia/fx-models"; export declare abstract class Shape implements ShapeObject { definition: DrawingShapeDefinition; shapeTemplateTypeName: string; nodes: FabricShapeData[]; left: number; top: number; angle: number; readonly shapeObject: fabric.Object[]; constructor(definition: DrawingShapeDefinition, nodes?: FabricShapeData[], title?: MultilingualString | string, selectable?: boolean, left?: number, top?: number, darkHighlight?: boolean); setAllowHover(allowSetHover: boolean): any; setSelectedShape(isSelected: boolean): any; isHover(): boolean; abstract ready(): Promise; abstract getShapeJson(): ShapeObject; abstract addEventListener(canvas: fabric.Canvas, gridX?: number, gridY?: number, shapeType?: number): any; abstract setTooltipCallbacks(callbacks: TooltipCallbacks): any; abstract updateShapePosition(): void; abstract updateShapeDefinition(definition: DrawingShapeDefinition, title: MultilingualString): void; static getTextPosition(definition: DrawingShapeDefinition, angle: number, centerPoint: fabric.Point, left?: number, top?: number, width?: number, height?: number): { left: number; top: number; }; } interface ShapeClasses { new (definition: DrawingShapeDefinition, nodes?: FabricShapeData[], title?: MultilingualString, selectable?: boolean, left?: number, top?: number, angle?: number, darkHighlight?: boolean): T; } declare class ShapeClassesFactory { createService(ctor: ShapeClasses, definition: DrawingShapeDefinition, nodes?: FabricShapeData[], title?: MultilingualString, selectable?: boolean, left?: number, top?: number, angle?: number, darkHighlight?: boolean): T; } export declare const ShapeFactory: ShapeClassesFactory; export {};