/**
 * This class holds all the information about posNr, TrashIcons and so on.
 */
import IComponentsPlannerUI from './IComponentsPlannerUI';
import { ViewPlannerConfig, Vector2, PlannerMode } from '@crystaldesign/web-planner-logic';
import ViewPlannerHandler from '../ViewPlannerHandler';
export type ElementStates = 'selectable' | 'selected' | 'unselectable';
export type IconType = 'PosNr' | 'TrashIcon' | 'AVL' | 'AVR' | 'AccDP' | 'RotateC' | 'RotateCC' | 'Rotate' | 'Move' | 'BoxCopyLeft' | 'BoxCopyRight' | 'BoxCopyTop' | 'CopyElement' | 'Outline' | 'Rot3DGrid' | 'Move3DGrid' | 'Outline3D' | 'DistanceFromGround' | 'Outline3D_Contour';
export interface Grid2DBackgroundState {
    position: Vector2;
    zoom: number;
}
export interface UiItem {
    type: IconType;
    key: number;
    elemState?: ElementStates;
    setId: string;
    elementId: string;
    position: Vector2;
    polygonPoints?: string;
    avgCamDist?: number;
    zIndex?: number;
    iconRotDeg?: number;
    iconZoom?: number;
    posNr?: string;
    size?: Vector2;
    dockingInfo?: 'DOCKING' | 'NOT_DOCKING';
    dockToElementId?: number;
    dpId?: string;
    clickFunction?: any;
    onDragStartFunction?: (setId: string, elementId: number) => void;
    onDragMoveFunction?: (setId: string, elementId: number, deltaMoveOnScreen: Vector2) => void;
    onDragEndFunction?: (setId: string, elementId: number) => void;
    rotOfElement?: number;
    plannerMode: '2D' | '3D' | '3DGrid' | 'BOX';
    onHover?: boolean;
    isDockedAccessoire?: boolean;
    dimensionVal?: number;
}
export default class PlannerUI implements IComponentsPlannerUI {
    uiItems: UiItem[];
    private uiOutline3DItems;
    private planner2DBackgroundInfo;
    private curSelectedDP;
    private viewPlannerUIHandler;
    private viewConfig;
    getCurPlannerViewMode: () => PlannerMode;
    private lastKey;
    constructor(viewPlannerUIHandler: ViewPlannerHandler, getCurPlannerViewMode: () => PlannerMode);
    private getKey;
    getPosNrByBasketId(basketId: string): number;
    setViewPlannerConfig(viewConfig: ViewPlannerConfig): void;
    clear2D3DViewerUI(): void;
    clear3DGridUI(): void;
    destroyUI(): void;
    addPosNrUI(setId: string, elementId: number, isDockedAccessoire: boolean, posOnScreen: Vector2, rotOfElement: number, zoom: number, posNr: string, state: ElementStates, plannerMode: '2D' | '3D'): void;
    addDistanceFromGround(setId: string, elementId: string, distanceVal: number, posOnScreen: Vector2): void;
    addTrashIconUI(setId: string, elementId: number, rotOfElement: number, posOnScreen: Vector2, plannerType: '2D' | 'BOX' | '3D'): void;
    addRotationIconUI(setId: string, elementId: number, rotOfElement: number, rotDirection: 'RotateC' | 'RotateCC', posOnScreen: Vector2, plannerMode: '2D' | '3D'): void;
    addElemOutlineUI(setId: string, elementId: number, rotOfElement: number, posOnScreen: Vector2, size: Vector2, state: ElementStates, onDragStart: any, onDragMove: any, onDragEnd: any, plannerMode: '2D' | '3D'): void;
    addDP(setId: string, elementId: number, dpId: string, dpType: 'AVL' | 'AVR' | 'ACC', dockingInfo: 'DOCKING' | 'NOT_DOCKING', dockToElementId: number | undefined, rotOfElement: number, iconRotDeg: number, posOnScreen: Vector2, plannerMode: '2D' | '3D'): void;
    addCopy(setId: string, elementId: number, copyType: 'BoxCopyLeft' | 'BoxCopyRight' | 'BoxCopyTop' | 'CopyElement', posOnScreen: Vector2, plannerMode: '2D' | '3D'): void;
    addMove3DGrid(setId: string, elementId: number, posOnScreen: Vector2, onDragStart: any, onDragMove: any, onDragEnd: any): void;
    addRot3DGrid(setId: string, elementId: number, posOnScreen: Vector2, onDragStart: any, onDragMove: any, onDragEnd: any): void;
    addOutline3D(setId: string, elementId: number, polygonPoints: string, avgCamDist: number, state: ElementStates, drawContours: boolean): void;
    /**
     * This function corrects the zIndex information of the outline3D Elements
     */
    private correctOutline3DZIndex;
    update2DGridBackground(backgroundState: Grid2DBackgroundState): void;
    get grid2DUIElement(): HTMLDivElement | null | undefined;
    getCanvas2DGridSize(): Vector2;
    getItems: () => Map<string, Map<string, Array<UiItem>>>;
    getItemsOutline3D(): UiItem[];
    get2DGridBackgroundState(): Grid2DBackgroundState;
    getViewConfig(): ViewPlannerConfig;
    getDPUIISSelected(dpUI: UiItem): boolean;
    setDPUISelectionChanged(dpUI: UiItem, isSelected: boolean): void;
    /**
     * This function updates the onHover information on a specific item.
     * @param doHover
     * @param item
     * @param updateOnType    Update the hover information on the icon with type e.g. PosNr
     */
    updateOnHoverOutline3D(doHover: boolean, item: UiItem, updateOnType: IconType): void;
}
//# sourceMappingURL=PlannerUI.d.ts.map