/**
 * 消息类型
 */
declare enum MessageType {
  CALL_REQ = "CALL_JS_SDK_REQ", // 接口请求消息
  CALL_RSP = "CALL_JS_SDK_RSP", // 接口响应消息
  EMIT_EVENT = "CALL_JS_SDK_EVENT", // 回调触发事件
}

/**
 * 接口请求类型
 */
declare enum CallType {
  DEF = "def", // 默认
  ON = "on", // 添加事件
  OFF = "off", // 移除事件
}

/**
 * 调用请求消息
 */
declare type ReqMessage = {
  type: MessageType.CALL_REQ;
  payload: {
    reqId: string; // 请求ID
    apiName: string; // 接口路径
    params: any[]; // 接口调用参数

    callType?: CallType; // 接口请求类型
    eventType?: string; // 事件类型
    unikey?: string; // 唯一key
  };
};

/**
 * 调用响应消息
 */
declare type RspMessage = {
  type: MessageType.CALL_RSP;
  payload: {
    reqId: string; // 请求ID
    apiName: string; // 接口路径
    rsp?: any; // 接口响应数据
    err?: any; // 报错返回数据
    unikey?: string; // 唯一key
  };
};

/**
 * 回调触发消息
 */
declare type EmitMessage = {
  type: MessageType.EMIT_EVENT;
  payload: {
    cbId: string; // 回调ID
    apiName: string; // 接口ID
    message: string; // 回调数据
    unikey?: string; // 唯一key
  };
};
