import type { RefObject } from 'react';
import type { tId } from '@itcase/common/types';
import type { tMapEntityType, TModel, tRectangle, tView } from 'src/interfaces/model';
import type { tMainMenuItemsList } from './common';
type tInitialData = TModel & {};
interface iCreateOrUpdateRectangleForViewParams {
    viewId?: tId;
    rectangleData: any;
    isSilent?: boolean;
}
interface iDeleteRectangleForViewParams {
    viewId?: tId;
    rectangleId: tId;
    isSilent?: boolean;
}
interface iCreateOrUpdateMapEntityType {
    groupId: tId;
    mapEntityTypeData: any;
    isSilent?: boolean;
}
interface iCreateOrUpdateMapEntityForViewParams {
    viewId?: tId;
    mapEntityData: any;
    isSilent?: boolean;
}
interface iDeleteMapEntityForViewParams {
    viewId?: tId;
    mapEntityId: tId;
    isSilent?: boolean;
}
interface iDeleteMapEntityTypeParams {
    groupId: tId;
    mapEntityTypeId: tId;
    isSilent?: boolean;
}
type tIsoflowMapRef = {
    isIsometricMode: boolean;
    currentView: tView;
    rectanglesList: tRectangle[];
    getEntityTypeById: (entityTypeId: tId, entityTypeGroupId: tId) => tMapEntityType;
    setRectanglesList: (rectanglesList: tRectangle[]) => void;
    createOrUpdateRectangleForView: (params: iCreateOrUpdateRectangleForViewParams) => void;
    createRectanglesList: (rectanglesDataList: tRectangle[]) => void;
    deleteRectangleForView: (params: iDeleteRectangleForViewParams) => void;
    createOrUpdateMapEntityType: (params: iCreateOrUpdateMapEntityType) => void;
    deleteMapEntityType: (params: iDeleteMapEntityTypeParams) => void;
    createOrUpdateMapEntityForView: (params: iCreateOrUpdateMapEntityForViewParams) => void;
    deleteMapEntityForView: (params: iDeleteMapEntityForViewParams) => void;
    closeMainMenu: () => void;
    setIsometricMode: (value: boolean) => void;
    setMapMode: (mapMode: any) => void;
    setState: (state: any) => void;
};
interface iIsoflowProviderProps {
    children: React.ReactNode;
    fitToView?: boolean;
    initialData?: tInitialData;
    onCreateMapEntity: (data: any) => void;
    onCreateRectangle: (data: any) => void;
    onDeleteMapEntity: (data: any) => void;
    onDeleteRectangle: (data: any) => void;
    onUpdateMapEntity: (data: any) => void;
    onUpdateRectangle: (data: any) => void;
}
interface iIsoflowConsumerProps {
    enableDebugTools?: boolean;
    height?: number | string;
    mainMenuItemsList?: tMainMenuItemsList;
    objectsWithoutCoordsMessage?: string;
    width?: number | string;
    onMouseDownRectangle: (data: any) => void;
}
interface iIsoflowProps extends iIsoflowProviderProps, iIsoflowConsumerProps {
    forwardedRef: RefObject<any>;
}
export type { tInitialData, iIsoflowProviderProps, iIsoflowConsumerProps, iIsoflowProps, tIsoflowMapRef, iCreateOrUpdateRectangleForViewParams, iDeleteRectangleForViewParams, iCreateOrUpdateMapEntityType, iCreateOrUpdateMapEntityForViewParams, iDeleteMapEntityForViewParams, iDeleteMapEntityTypeParams, };
