var MiaojuJsMethod ={
    $JsDefine: {
      isDebug: false,
    },
    isDebug:function(isDebug){
        if(isDebug=="1"){
          JsDefine.isDebug = true;
        }else{
          JsDefine.isDebug = false;
        }
    },
    init:function(param){
      try{
        window.MiaojuSdk.init(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("init:callback");
            console.log(data);
          }
          SendMessage("MiaoJuWxSDKBridge", "InitCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js", 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;
      }
    },
    pay:function(param){
      try{
        window.MiaojuSdk.pay(JSON.parse(UTF8ToString(param)),(data)=>{
            if(JsDefine.isDebug){
              console.log("pay:callback");
              console.log(data);
            }
            SendMessage("MiaoJuWxSDKBridge", "PayCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js", error);
      }
    },
    rewardVideoAdCreate:function(param){
      try{
        window.MiaojuSdk.rewardVideoAdCreate(JSON.parse(UTF8ToString(param)),(data)=>{
            if(JsDefine.isDebug){
              console.log("js recive rewardVideoAdCreate param:");
            }
            SendMessage("MiaoJuWxSDKBridge", "RewardVideoAdCreateCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js", error);
      }
    },
    rewardVideoAdShow:function(param){
      try{
        window.MiaojuSdk.rewardVideoAdShow(JSON.parse(UTF8ToString(param)),(data)=>{
            if(JsDefine.isDebug){
              console.log("js recive rewardVideoAdShow:");
            }
            SendMessage("MiaoJuWxSDKBridge", "RewardVideoAdShowCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js", error);
      }
    },
    share:function(param){
      try{
        window.MiaojuSdk.share(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive share:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive shareOpen");
          }
        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)=>{
          if(JsDefine.isDebug){
            console.log("js recive openCustomerService:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive getUserInfo:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive createUserInfoButton:");
          }
          SendMessage("MiaoJuWxSDKBridge", "CreateUserInfoButtonCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js error", error);
      }
    },
    destoryUserInfoButton:function(param){
      try{
        window.MiaojuSdk.destoryUserInfoButton(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive destoryUserInfoButton:");
          }
          SendMessage("MiaoJuWxSDKBridge", "DestoryUserInfoButtonCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js error", error);
      }
    },
    createRole:function(param){
      try{
        window.MiaojuSdk.createRole(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive createRole");
          }
          SendMessage("MiaoJuWxSDKBridge", "CreateRoleCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js error:", error);
      }
    },
    loginRole:function(param){
      try{
        window.MiaojuSdk.loginRole(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive loginRole");
          }
          SendMessage("MiaoJuWxSDKBridge", "LoginRoleCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js error:", error);
      }
    },
    changeRole:function(param){
      try{
        window.MiaojuSdk.changeRole(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive changeRole:");
          }
          SendMessage("MiaoJuWxSDKBridge", "ChangeRoleCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js error:", error);
      }
    },
    reportLog:function(param){
      try{
        window.MiaojuSdk.reportLog(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive reportLog:");
          }
          SendMessage("MiaoJuWxSDKBridge", "ReportLogCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js error:", error);
      }
    },
    ssUserSet:function(param){
      try{
        window.MiaojuSdk.ssUserSet(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive ssUserSet:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive ssReport:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive ylyqReport:");
          }
          SendMessage("MiaoJuWxSDKBridge", "YlyqReportCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js error:", error);
      }
    },
    buttonOne:function(param){
      try{
        window.MiaojuSdk.buttonOne(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive buttonOne:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive buttonTwo:");
          }
          SendMessage("MiaoJuWxSDKBridge", "ButtonTwoCallBackFromJs",JSON.stringify(data));
        });
      }catch(error){
        console.log("jslib js error:", error);
      }
    },
    joinVoIPChat:function(param){
      try{
        window.MiaojuSdk.joinVoIPChat(JSON.parse(UTF8ToString(param)),(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive JoinVoIPChat:");
          }
          SendMessage("MiaoJuWxSDKBridge", "JoinVoIPChatCallBackFromJs",JSON.stringify(data));
        },(data)=>{
          if(JsDefine.isDebug){
            console.log("js recive JoinVoIPChatListen:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive exitVoIPChat:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive updateVoIPChatMuteConfig:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive requestSubscribeMessage:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive requestSubscribeSystemMessage:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive requestSubscribeMessage:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive rewardVideoAdCreate2:");
          }
          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)=>{
          if(JsDefine.isDebug){
            console.log("js recive getLocation:");
          }
          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);
      }
    },
  };
  autoAddDeps(MiaojuJsMethod, '$JsDefine');
  mergeInto(LibraryManager.library,MiaojuJsMethod);