var MiaojuJsMethod ={
  init:function(param){
    try{
      window.MiaojuSdk.init(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "InitCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js", error);
    }
  },
  pay:function(param){
    try{
      window.MiaojuSdk.pay(JSON.parse(UTF8ToString(param)),(data)=>{
          SendMessage("MiaoJuWxSDKBridge", "PayCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js", error);
    }
  },
  share:function(param){
    try{
      window.MiaojuSdk.share(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "ShareCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js", error);
    }
  },
  shareOpen:function(param){
    try{
      window.MiaojuSdk.shareOpen(JSON.parse(UTF8ToString(param)),(data)=>{
      SendMessage("MiaoJuWxSDKBridge", "ShareOpenCallBackFromJs",JSON.stringify(data));
     });
    }catch(error){
        console.log("jslib js error:", error);
    }
  },
  openCustomerService:function(param){
    try{
      window.MiaojuSdk.openCustomerService(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "OpenCustomerServiceCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js", error);
    }
  },
  getUserInfo:function(param){
    try{
      window.MiaojuSdk.getUserInfo(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "GetUserInfoCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error", error);
    }
  },
  createUserInfoButton:function(param){
    try{
      window.MiaojuSdk.createUserInfoButton(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "CreateUserInfoButtonCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error", error);
    }
  },
  createRole:function(param){
    try{
      window.MiaojuSdk.createRole(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "CreateRoleCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  changeRole:function(param){
    try{
      window.MiaojuSdk.changeRole(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "ChangeRoleCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  loginRole:function(param){
    try{
      window.MiaojuSdk.loginRole(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "LoginRoleCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  reportLog:function(param){
    try{
      window.MiaojuSdk.reportLog(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "ReportLogCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  rewardVideoAdCreate:function(param){
    try{
      window.MiaojuSdk.rewardVideoAdCreate(JSON.parse(UTF8ToString(param)),(data)=>{
          SendMessage("MiaoJuWxSDKBridge", "RewardVideoAdCreateCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js", error);
    }
  },
  buttonOne:function(param){
    try{
      window.MiaojuSdk.buttonOne(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "ButtonOneCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  buttonTwo:function(param){
    try{
      window.MiaojuSdk.buttonTwo(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "ButtonTwoCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  ssUserSet:function(param){
    try{
      window.MiaojuSdk.ssUserSet(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "SsUserSetCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  ssReport:function(param){
    try{
      window.MiaojuSdk.ssReport(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "SsReportCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  ylyqReport:function(param){
    try{
      window.MiaojuSdk.ylyqReport(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "YlyqReportCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  getUserLaunchInfo:function(){
    try{
       const getOption = window.MiaojuSdk.getUserLaunchInfo();
       console.log("getUserLaunchInfo:");
       console.log(getOption);

       if(typeof getOption=="string"){
          var bufferSize = lengthBytesUTF8(getOption) + 1;
          var buffer = _malloc(bufferSize);
          stringToUTF8(getOption, buffer, bufferSize);
          return buffer;
       }else{
          const optionStr = JSON.stringify(getOption);
          console.log("getUserLaunchInfo optionStr:");
          console.log(optionStr);
          var bufferSize = lengthBytesUTF8(optionStr) + 1;
          var buffer = _malloc(bufferSize);
          stringToUTF8(optionStr, buffer, bufferSize);
          return buffer;
       }

    }catch(error){
      console.log("jslib js", error);
      const returnStr  = "{}";
      var bufferSize = lengthBytesUTF8(returnStr) + 1;
      var buffer = _malloc(bufferSize);
      stringToUTF8(returnStr, buffer, bufferSize);
      return buffer;
    }
  },
  destoryUserInfoButton:function(param){
    try{
      window.MiaojuSdk.destoryUserInfoButton(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "DestoryUserInfoButtonCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error", error);
    }
  },
  joinVoIPChat:function(param){
    try{
      window.MiaojuSdk.joinVoIPChat(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "JoinVoIPChatCallBackFromJs",JSON.stringify(data));
      },(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "JoinVoIPChatListenCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  exitVoIPChat:function(param){
    try{
      window.MiaojuSdk.exitVoIPChat(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "ExitVoIPChatCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  updateVoIPChatMuteConfig:function(param){
    try{
      window.MiaojuSdk.updateVoIPChatMuteConfig(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "UpdateVoIPChatMuteConfigCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  requestSubscribeMessage:function(param){
    try{
      window.MiaojuSdk.requestSubscribeMessage(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "RequestSubscribeMessageCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  requestSubscribeSystemMessage:function(param){
    try{
      window.MiaojuSdk.requestSubscribeSystemMessage(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "RequestSubscribeSystemMessageCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  checkIsAddedToMyMiniProgram:function(param){
    try{
      window.MiaojuSdk.checkIsAddedToMyMiniProgram(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "CheckIsAddedToMyMiniProgramCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  rewardVideoAdCreate2:function(param){
    try{
      window.MiaojuSdk.rewardVideoAdCreate2(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "RewardVideoAdCreate2CallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  getLocation:function(param){
    try{
      window.MiaojuSdk.getLocation(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "GetLocationCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
  getSetting:function(param){
    try{
      window.MiaojuSdk.getSetting(JSON.parse(UTF8ToString(param)),(data)=>{
        SendMessage("MiaoJuWxSDKBridge", "GetSettingCallBackFromJs",JSON.stringify(data));
      });
    }catch(error){
      console.log("jslib js error:", error);
    }
  },
};
mergeInto(LibraryManager.library,MiaojuJsMethod);