import { EditorModeEnum, ICoords, ISize, tMainMenuItemsList } from './common';
import { TItemReference } from './scene';
interface AddNewEntityControls {
    type: 'ADD_ITEM';
}
export type ItemControls = TItemReference | AddNewEntityControls;
export interface Mouse {
    position: {
        screen: ICoords;
        tile: ICoords;
    };
    mousedown: {
        screen: ICoords;
        tile: ICoords;
    } | null;
    delta: {
        screen: ICoords;
        tile: ICoords;
    } | null;
}
export interface InteractionsDisabled {
    type: 'INTERACTIONS_DISABLED';
    showCursor: boolean;
}
export interface CursorMode {
    type: 'CURSOR';
    showCursor: boolean;
    mousedownItem: TItemReference | null;
}
export interface DragItemsMode {
    type: 'DRAG_ITEMS';
    showCursor: boolean;
    items: TItemReference[];
    wasMovement: boolean;
}
export interface PanMode {
    type: 'PAN';
    showCursor: boolean;
}
export interface PlaceIconMode {
    type: 'PLACE_ICON';
    showCursor: boolean;
    id: string | null;
}
export interface PlaceItemMode {
    type: 'PLACE_ITEM';
    showCursor: boolean;
    id: string | null;
    iconId: string | null;
}
export interface ConnectorMode {
    type: 'CONNECTOR';
    showCursor: boolean;
    id: string | null;
}
export interface DrawRectangleMode {
    type: 'RECTANGLE.DRAW';
    showCursor: boolean;
    id: string | null;
}
export declare const AnchorPositionOptions: {
    readonly BOTTOM_LEFT: "BOTTOM_LEFT";
    readonly BOTTOM_RIGHT: "BOTTOM_RIGHT";
    readonly TOP_RIGHT: "TOP_RIGHT";
    readonly TOP_LEFT: "TOP_LEFT";
};
export type AnchorPosition = keyof typeof AnchorPositionOptions;
export interface TransformRectangleMode {
    type: 'RECTANGLE.TRANSFORM';
    showCursor: boolean;
    id: string;
    selectedAnchor: AnchorPosition | null;
}
export interface TextBoxMode {
    type: 'TEXTBOX';
    showCursor: boolean;
    id: string | null;
}
export interface ISvgViewBoxParams extends ISize {
    minX?: number;
    minY?: number;
}
export type Mode = InteractionsDisabled | CursorMode | PanMode | PlaceIconMode | PlaceItemMode | ConnectorMode | DrawRectangleMode | TransformRectangleMode | DragItemsMode | TextBoxMode;
export interface Scroll {
    position: ICoords;
    offset: ICoords;
}
export declare const DialogTypeEnum: {
    readonly EXPORT_IMAGE: "EXPORT_IMAGE";
};
export interface ContextMenu {
    item: TItemReference;
    tile: ICoords;
}
export declare const LayerOrderingActionOptions: {
    readonly BRING_TO_FRONT: "BRING_TO_FRONT";
    readonly SEND_TO_BACK: "SEND_TO_BACK";
    readonly BRING_FORWARD: "BRING_FORWARD";
    readonly SEND_BACKWARD: "SEND_BACKWARD";
};
export type LayerOrderingAction = keyof typeof LayerOrderingActionOptions;
export interface UiState {
    mapMode: keyof typeof EditorModeEnum;
    activeTool: Mode;
    dialog: keyof typeof DialogTypeEnum | null;
    isMainMenuOpen: boolean;
    itemControls: ItemControls | null;
    contextMenu: ContextMenu | null;
    zoom: number;
    scroll: Scroll;
    mouse: Mouse;
    enableDebugTools: boolean;
}
export interface UiStateActions {
    setMainMenuOptions: (options: tMainMenuItemsList) => void;
    setMapMode: (editorModeKey: keyof typeof EditorModeEnum) => void;
    resetUiState: () => void;
    setMode: (activeTool: Mode) => void;
    incrementZoom: () => void;
    decrementZoom: () => void;
    setDialog: (dialog: keyof typeof DialogTypeEnum | null) => void;
    setZoom: (zoom: number) => void;
    setScroll: (scroll: Scroll) => void;
    setItemControls: (itemControls: ItemControls | null) => void;
    setContextMenu: (contextMenu: ContextMenu | null) => void;
    setMouse: (mouse: Mouse) => void;
    setRendererEl: (el: HTMLDivElement) => void;
    setEnableDebugTools: (enabled: boolean) => void;
}
export type UiStateStoreType = UiState & {};
export {};
