import { RequestMessageType } from "./enums";
export interface IRequestMessage {
    /**
     * @description 字符串，不可空。推荐用 GUID
     */
    Token: string;
    /**
     * @description 整型，不可空，固定值为 0
     */
    MessageType: 0;
    /**
     * @description 字符串，不可空，取值范围为一系列定义好的字符串常量
     */
    RequestType: string;
    /**
     * @description 结构体，可空。对应不同的 `RequestType` 有不同的参数
     */
    Params?: Record<string, any>;
}
export interface IResponseMessage {
    /**
     * @description 字符串，对应的请求消息的 Token 值
     */
    Token: string;
    /**
     * @description 整型，不可空，固定值为 1
     */
    MessageType: typeof RequestMessageType.response;
    /**
     * @description 整型
     * - 0-请求处理成功
     * - 1-请求处理失败
     */
    Status: 0 | 1;
    /**
     * @description 当 Status 为 1 时，ErrorMessage 即为错误描述
     */
    ErrorMessage?: string;
    /**
     * @description ModelEngine 给客户端返回的数据
     * - 请求消息中 RequestType 的值不同，返回的数据结构也不同。
     */
    Data?: any;
}
export interface INotificationMessage {
    /**
     * @description 字符串，ModelEngine 会对每个通知消息生成一个唯一的 Token 值
     */
    Token: string;
    /**
     * @description 整型，不可空，固定值为 2
     */
    MessageType: typeof RequestMessageType.notification;
    /**
     * @description 字符串，不为空，取值范围为：一系列定义好的字符串常量
     */
    NotificationType: string;
    /**
     * @description 结构体，可空，事件消息带的数据，数据结构由 NotificationType 值决定
     */
    Data?: any;
}
export type NotificationCallback = (data: any) => void;
