import DockingPoint from './DockingPoint';
import { Vector3, Vector2 } from './wcVectors';
import PlannerDataType from '../../interface/Planner/PlannerDataType';
export default class PlannerElementData {
    private planElement;
    private plannerStateHash;
    private dockingPoints;
    private tempDockingPoints;
    private plannerType;
    private readonly basketId;
    private doSetWidthFromSVG;
    private doSetDepthFromSVG;
    constructor(setId: string, basketId: string, _elementId: number, plannerType: 'STD' | 'BOX');
    destroy(): void;
    getTempDockingPoints(): DockingPoint[];
    clearTempDockingPoints(): void;
    getDockingPoints(): DockingPoint[];
    /**
     * This function returns true if any docking Point of the type is docking. For example, the type is AVL. if no AVL is docking - return false. If at least one AVL is docking - return true.
     * @param type Type of the docking point
     */
    dockingTypeIsDocking(type: string): boolean;
    /**
     * This function returns all docking DPs of a specific type.
     * @param type  The type of the docking Point , e.g. AVL
     */
    getDockingDockingPointsByType(type: string): DockingPoint[];
    /**
     * This function returns all docking DPs of any type.
     */
    getDockingDockingPoints(): DockingPoint[];
    /**
     * This function returns all notDocking DPs of a specific type.
     * @param type  The type of the docking Point , e.g. AVL
     */
    getFreeDockingPointsByType(type: string): DockingPoint[];
    /**
     * This function returns the free docking with the specific type and number
     * @param type
     * @param number
     */
    getFreeDockingPointByTypeAndNumber(type: string, number: number): DockingPoint | undefined;
    /**
     * This function returns all docking points of the element. It returns docking and not docking points with any type.
     */
    getAllDockingPoints(): DockingPoint[];
    getDockingPointsByType(type: string): DockingPoint[];
    getDockingPointById(id: string): DockingPoint | undefined;
    /**
     * This function retuns the DockingPoint info in a string format that is used for the 3D image rendering planningData.
     */
    getDockingPointJS3D(): string;
    get ArticleCodex(): string;
    /**
     * Returns true if the accessoire is docked to another element in the planner (relatedToBasketID is set).
     */
    get IsDockedAccessoire(): boolean;
    get IsAccessoire(): boolean | undefined;
    get FilterType(): "DockL" | "DockLR" | "DockR" | "DockNone" | "Accessoire" | undefined;
    get FilterAVL(): string[];
    get FilterAVR(): string[];
    set PosNr(posNr: number);
    get PosNr(): number;
    set SetPosNr(setPosNr: number);
    set AccessoirePosNr(posNr: number);
    get AccessoirePosNr(): number;
    get WorldPosCenter(): Vector3;
    get WorldPosCenterIgnoreOLF(): Vector3;
    /**
     * This function returns the world pos of the top left bottom corner.
     */
    get WorldPosCorner(): Vector3;
    get WorldPosCornerIgnoreOLF(): Vector3;
    set WorldPosCornerIgnoreOLF(cornerPos: Vector3);
    set WorldPosCenter(pos: Vector3);
    set WorldPosCorner(cornerPos: Vector3);
    /**
     * This function updates the world position and rotation of the element based of some delta Elements
     * @param deltaMove     delta translation in cm
     * @param deltaRotDeg   delta rotation in degrees
     * @param rotCorrection Specifies the degrees the rotation is corrected. For Example if rotCorrection is 5 degrees and the final angle is between 20 and 25: Then the final angle is rounded to the nearest angle
     */
    updateDeltaTrans(deltaMove: Vector3, deltaRotDeg: number, rotCorrection: number, correctAngle: boolean): void;
    private processCenterRot;
    /**
     * Returns the position in world coordinates of the DP. DP LocalWorldPos is OLF-relative when HasOLFPolygon.
     * @param dpID
     */
    getWorldPosOfDP(dpID: string): Vector3;
    /**
     * Returns the outlines of the bounding box in world coordinates
     */
    getWorld2DBBoxOutline(): Vector2[];
    set RotDeg(rot: number);
    get RotDeg(): number;
    /**
     * Saves the current docking point state
     */
    saveCurrentDPState(): void;
    clearAllDockingPoints(): void;
    addDockingPoint(dockingPoint: DockingPoint): void;
    updatePlannerData(data?: PlannerDataType): boolean;
    cleanShapeOLF2D(): void;
    cleanShapeOLT2D(): void;
    get DoSetWidthFromSVG(): boolean;
    get DoSetDepthFromSVG(): boolean;
    set WidthFromSVG(svgWidth: number);
    set DepthFromSVG(svgDepth: number);
    get ElementId(): number;
    get SvgFileName(): string | undefined;
    get Width(): number | undefined;
    get Height(): number | undefined;
    get Depth(): number | undefined;
    get HasAVL(): boolean | undefined;
    get HasAVR(): boolean | undefined;
    get HasAVO(): boolean;
    get HasAVU(): boolean;
    get HasAVC(): boolean;
    get HasAVN(): boolean;
    get HasAVS(): boolean;
    set SvgShapeOLF2D(shape: any);
    get SvgShapeOLF2D(): any;
    set SvgShapeOLT2D(shape: any);
    get SvgShapeOLT2D(): any;
    set OLTPolygon(polygon: Vector2[] | undefined);
    get OLTPolygon(): Vector2[] | undefined;
    set OLTTop(top: number);
    set OLTLeft(left: number);
    set OLTWidth(width: number);
    set OLTDepth(depth: number);
    setupOLF(polygon: any, olfWidth: number, olfDepth: number): void;
    clearOLF(): void;
    getGlobalWidth(ignoreOLF?: boolean): number;
    getGlobalDepth(ignoreOLF?: boolean): number;
    get HasOLTPolygon(): boolean;
    get HasOLFPolygon(): boolean;
    get svgBefore(): string | undefined;
    set svgBefore(svg: string | undefined);
    get svgAfter(): string | undefined;
    set svgAfter(svg: string | undefined);
    getOLTPolygonWorldPos(): Vector2[];
    getOLFPolygonWorldPos(): Vector2[];
    set SvgData(svgData: string);
    get SvgData(): string;
    set SvgDataOLTBase64(svgData: string);
    get Layer(): number;
    get HasSvgAsHTMLCanvas(): boolean;
    set SvgAsHTMLCanvas(ctx: HTMLCanvasElement);
    get SvgAsHTMLCanvas(): HTMLCanvasElement;
    /** ---------------------------------Getter und setter for the view------------------------- */
    getArticleCodex(): string;
    getPosNr(): number;
    getIsDockedAccessoire(): boolean;
    getIsNotDockedAccessoire(): boolean;
    getParentElementId(): number | undefined;
    getElementId(): number;
    getBasketId(): string;
    getSetId(): string;
    getWorldPosCorner(): Vector3;
    /**
     * Returns the corner for positioning OLF shapes. When HasOLFPolygon, this is the OLF corner
     * (worldPosCenter = OLF center, so OLF corner = center + (-olfW/2, -olfD/2)).
     * When no OLF, returns WorldPosCorner (planner/OLT corner).
     */
    getWorldPosCornerOLF(): Vector3;
    /**
     * This function returns the position in world coordinates of the CENTER of the plannerElement
     */
    getWorldPosCenter(): Vector3;
    getRotDeg(): number;
    getRotRad(): number;
    getHasAVL(): boolean;
    getHasAVR(): boolean;
    getHasAVO(): boolean;
    getHasAVU(): boolean;
    getHasAVC(): boolean;
    getHasAVN(): boolean;
    getHasAVS(): boolean;
    getFilterAVL(): string[];
    getFilterAVR(): string[];
    getSVGShapeOLF2D(): any;
    getSVGShapeOLT2D(): any;
    getPlannerType(): "STD" | "BOX";
    /**
     * Returns the original svg XML
     */
    getSVGData(): string;
    getWidth(): number;
    getHeight(): number;
    getDepth(): number;
    getHeightOLT(): number;
    getWidthOLT(): number;
    getLayer(): number;
    hasSvgAsHtmlCanvas(): boolean;
    getSvgAsHtmlCanvas(): HTMLCanvasElement;
    hasSvgDataOLTBase64(): boolean;
    getSvgDataOLTBase64(): string;
    getAccessoires(): string[];
    getSVGsWithFormula(): import("../../interface/Articles/CatalogPlannerArticleDataType").SVGWithFormula[] | undefined;
    /** OLT offset from OLF corner (cm). When HasOLFPolygon, DP LocalWorldPos is OLF-relative; subtract this to get OLT-relative. */
    getOltLeft(): number;
    getOltTop(): number;
    getVaraintValuesInfluencingAVLAVRFilter(): {
        [opt: string]: string;
    }[] | undefined;
    getCurrentAccessorires(): PlannerElementData[];
}
//# sourceMappingURL=PlannerElementData.d.ts.map