function setupWebViewJavascriptBridge(callback: {
  (bridge: any): void;
  (bridge: any): void;
  (arg0: any): any;
}) {
  if (window.WebViewJavascriptBridge) {
    return callback(window.WebViewJavascriptBridge);
  }
  if (window.WVJBCallbacks) {
    return window.WVJBCallbacks.push(callback);
  }
  window.WVJBCallbacks = [callback];
  let WVJBIframe = document.createElement("iframe");
  WVJBIframe.style.display = "none";
  WVJBIframe.src = "https://__bridge_loaded__";
  document.documentElement.appendChild(WVJBIframe);
  setTimeout(() => {
    document.documentElement.removeChild(WVJBIframe);
  }, 0);
}
export default {
  callhandler(name: string, data: {}, callback: undefined) {
    setupWebViewJavascriptBridge(function (bridge: {
      callHandler: (arg0: any, arg1: any, arg2: any) => void;
    }) {
      bridge.callHandler(name, data, callback);
    });
  },
  registerhandler(
    name: any,
    callback: {
      (data: any, responseCallback: (arg0: string) => void): void;
      (arg0: any, arg1: any): void;
    }
  ) {
    setupWebViewJavascriptBridge(function (bridge: {
      registerHandler: (
        arg0: any,
        arg1: (data: any, responseCallback: any) => void
      ) => void;
    }) {
      bridge.registerHandler(name, function (data: any, responseCallback: any) {
        callback(data, responseCallback);
      });
    });
  },
};
