import type { MOUSE_EVENT_TYPE, MOUSE_CLICK_TYPE } from "./enums";
import type { NOTIFICATION_TYPE } from "./notification-type";
export interface NotificationData {
    [NOTIFICATION_TYPE.LoadDataCompeted]: null;
    [NOTIFICATION_TYPE.DayTimeChanged]: {
        TimeOfDay: number;
    };
    [NOTIFICATION_TYPE.CurrentSpaceChanged]: {
        OldSpaceId: string;
        NewSpaceId: string;
    };
    [NOTIFICATION_TYPE.ObjectMouseEventRaised]: {
        /**
         * @description 空间或物体 Id
         */
        ObjectId: string;
        /**
         * @description 鼠标事件类型
         * - 0：MouseEnter
         * - 1：MouseLeave
         * - 2：MouseDown
         * - 3：MouseUp
         * - 4：MouseClick
         */
        EventType: MOUSE_EVENT_TYPE;
        /**
         * @description 触发鼠标事件的按键
         * - 0：左键
         * - 1：右键
         * 2：中间键
         */
        Button: MOUSE_CLICK_TYPE;
        /**
         * @description 鼠标按键点击的次数
         */
        ClickCount: number;
        /**
         * @description 鼠标点击的位置
         */
        Position: {
            X: number;
            Y: number;
        };
        WorldPosition: {
            X: number;
            Y: number;
            Z: number;
        };
    };
    [NOTIFICATION_TYPE.CameraViewPointChanged]: {
        Position: {
            X: number;
            Y: number;
            Z: number;
        };
        EulerAngles: {
            X: number;
            Y: number;
            Z: number;
        };
        LookAtPosition: {
            X: number;
            Y: number;
            Z: number;
        };
    };
    [NOTIFICATION_TYPE.CameraControlTypeChanged]: {
        /**
         * - 0：三维地图方式
         * - 1：第一人称视角方式
         * - 2：第三人称视角方式
         */
        CurrentControlType: 0 | 1 | 2;
    };
    [NOTIFICATION_TYPE.ObjectInfoPanelStateChanged]: {
        ObjectId: string;
        IsOpened: boolean;
    };
    [NOTIFICATION_TYPE.IoTCommandSent]: {
        deviceIds: string[];
        params: unknown;
        command: string;
        [key: string]: unknown;
    }[];
    /**
     * html 交互变化
     */
    [NOTIFICATION_TYPE.Web3DUIInteraction]: {
        type: string;
        data: any;
    };
    /**
     * 模型状体变化
     */
    [NOTIFICATION_TYPE.ObjectState]: {
        ObjectId: string;
        Data: {
            Visible: boolean;
            Interactive: boolean;
            Position: {
                X: number;
                Y: number;
                Z: number;
            };
            EulerAngles: {
                X: number;
                Y: number;
                Z: number;
            };
            Scale: {
                X: number;
                Y: number;
                Z: number;
            };
            NewObject: boolean;
            DeleteObject: boolean;
            SetParent: string;
        };
    };
}
