UNPKG

@b2network/b2-wallet-kit

Version:

#### install

1,012 lines (983 loc) 46.1 kB
"use client"; "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/index.ts var src_exports = {}; __export(src_exports, { B2ModalProvider: () => B2ModalProvider, BinanceConnector: () => BinanceConnector, ChainType: () => ChainType, Coin98Connector: () => Coin98Connector, FoxConnector: () => FoxConnector, TomoConnector: () => TomoConnector, WalletCollection: () => WalletCollection, WalletTypes: () => WalletTypes, b2Network: () => b2Network, b2TestHabitat: () => b2TestHabitat, b2TestHaven: () => b2TestHaven, b2Testnet: () => b2Testnet, getWalletIconByName: () => getWalletIconByName, signedMsgAdapter: () => signedMsgAdapter, useB2Account: () => useB2Account, useB2Disconnect: () => useB2Disconnect, useB2Modal: () => useB2Modal, useCurrentWallet: () => useCurrentWallet, useOpenModal: () => useOpenModal, useSignMessage: () => useSignMessage }); module.exports = __toCommonJS(src_exports); // src/context/index.tsx var import_react3 = require("react"); // src/components/connectModal/index.tsx var import_wagmi2 = require("wagmi"); var import_react_modal = __toESM(require("react-modal"), 1); // src/utils/wallet/types.ts var WalletCollection = /* @__PURE__ */ ((WalletCollection2) => { WalletCollection2["BTC"] = "btc"; WalletCollection2["ETH"] = "eth"; WalletCollection2["ALL"] = "all"; return WalletCollection2; })(WalletCollection || {}); var WalletTypes = /* @__PURE__ */ ((WalletTypes2) => { WalletTypes2["WALLET_METAMASK"] = "metamask"; WalletTypes2["WALLET_UNISAT"] = "unisat"; WalletTypes2["WALLET_OKX_EVM"] = "okx_evm"; WalletTypes2["WALLET_OKX_BTC"] = "okx_btc"; WalletTypes2["WALLET_GATE"] = "gate"; WalletTypes2["WALLET_GATE_BTC"] = "gate_btc"; WalletTypes2["WALLET_TOMO_EVM"] = "tomo_evm"; WalletTypes2["WALLET_TOMO_BTC"] = "tomo_btc"; WalletTypes2["WALLET_BYBIT_EVM"] = "bybit_evm"; WalletTypes2["WALLET_BYBIT_BTC"] = "bybit_btc"; WalletTypes2["WALLET_COIN98_BTC"] = "coin98_btc"; WalletTypes2["WALLET_COIN98_EVM"] = "coin98_evm"; WalletTypes2["WALLET_FOX_BTC"] = "fox_btc"; WalletTypes2["WALLET_FOX_EVM"] = "fox_evm"; WalletTypes2["WALLET_BITGET_EVM"] = "bitget_evm"; WalletTypes2["WALLET_BITGET_BTC"] = "bitget_btc"; WalletTypes2["WALLET_XVERSE"] = "xverse"; WalletTypes2["WALLET_TOKENPOCKET"] = "tokenpocket"; WalletTypes2["WALLET_BINANCE_EVM"] = "binance_evm"; WalletTypes2["WALLET_BINANCE_BTC"] = "binance_btc"; return WalletTypes2; })(WalletTypes || {}); var ChainType = /* @__PURE__ */ ((ChainType2) => { ChainType2["ETH"] = "eth"; ChainType2["BTC"] = "btc"; return ChainType2; })(ChainType || {}); // src/components/connectModal/index.tsx var import_react2 = require("react"); // src/imgs/icon_type.svg var icon_type_default = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIiBmaWxsPSJub25lIj4KICA8bWFzayBpZD0icGF0aC0xLWluc2lkZS0xXzUwMjJfNTEiIGZpbGw9IndoaXRlIj4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTguMDQzNiA5Ljk5ODM0TDE2IDBMMTMuOTYxMSA5Ljk3NTI5TDguMjEwNDcgOC4yMDk2M0w5Ljk3NjMyIDEzLjk2MDlMMCAxNkw5Ljk5ODg5IDE4LjA0MzdMOC4yMTA0NyAyMy44Njg1TDEzLjk3NjIgMjIuMDk4MkwxNiAzMkwxOC4wMjg2IDIyLjA3NTJMMjMuODY5MyAyMy44Njg1TDIyLjA3NjIgMTguMDI4M0wzMiAxNkwyMi4wOTg4IDEzLjk3NjNMMjMuODY5MyA4LjIwOTYzTDE4LjA0MzYgOS45OTgzNFoiLz4KICA8L21hc2s+CiAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOC4wNDM2IDkuOTk4MzRMMTYgMEwxMy45NjExIDkuOTc1MjlMOC4yMTA0NyA4LjIwOTYzTDkuOTc2MzIgMTMuOTYwOUwwIDE2TDkuOTk4ODkgMTguMDQzN0w4LjIxMDQ3IDIzLjg2ODVMMTMuOTc2MiAyMi4wOTgyTDE2IDMyTDE4LjAyODYgMjIuMDc1MkwyMy44NjkzIDIzLjg2ODVMMjIuMDc2MiAxOC4wMjgzTDMyIDE2TDIyLjA5ODggMTMuOTc2M0wyMy44NjkzIDguMjA5NjNMMTguMDQzNiA5Ljk5ODM0WiIgZmlsbD0iI0ZGQjg1MiIvPgogIDxwYXRoIGQ9Ik0xNiAwTDE2Ljk3OTcgLTAuMjAwMjUyTDE1LjAyMDMgLTAuMjAwMjUyTDE2IDBaTTE4LjA0MzYgOS45OTgzNEwxNy4wNjM4IDEwLjE5ODZMMTcuMjg0NCAxMS4yNzc1TDE4LjMzNzEgMTAuOTU0M0wxOC4wNDM2IDkuOTk4MzRaTTEzLjk2MTEgOS45NzUyOUwxMy42Njc2IDEwLjkzMTJMMTQuNzIwMyAxMS4yNTQ1TDE0Ljk0MDkgMTAuMTc1NUwxMy45NjExIDkuOTc1MjlaTTguMjEwNDcgOC4yMDk2M0w4LjUwMzk4IDcuMjUzNjhMNi43MDA5MSA2LjcwMDA3TDcuMjU0NTEgOC41MDMxNUw4LjIxMDQ3IDguMjA5NjNaTTkuOTc2MzIgMTMuOTYwOUwxMC4xNzY2IDE0Ljk0MDdMMTEuMjU1NSAxNC43MjAxTDEwLjkzMjMgMTMuNjY3NEw5Ljk3NjMyIDEzLjk2MDlaTTAgMTZMLTAuMjAwMjUyIDE1LjAyMDNMLTAuMjAwMjUyIDE2Ljk3OTdMMCAxNlpNOS45OTg4OSAxOC4wNDM3TDEwLjk1NDggMTguMzM3MkwxMS4yNzgxIDE3LjI4NDVMMTAuMTk5MSAxNy4wNjM5TDkuOTk4ODkgMTguMDQzN1pNOC4yMTA0NyAyMy44Njg1TDcuMjU0NTEgMjMuNTc1TDYuNzAwOTEgMjUuMzc4MUw4LjUwMzk4IDI0LjgyNDRMOC4yMTA0NyAyMy44Njg1Wk0xMy45NzYyIDIyLjA5ODJMMTQuOTU1OSAyMS44OThMMTQuNzM1NCAyMC44MTlMMTMuNjgyNiAyMS4xNDIzTDEzLjk3NjIgMjIuMDk4MlpNMTYgMzJMMTUuMDIwMyAzMi4yMDAzSDE2Ljk3OTdMMTYgMzJaTTE4LjAyODYgMjIuMDc1MkwxOC4zMjIxIDIxLjExOTJMMTcuMjY5MyAyMC43OTZMMTcuMDQ4OCAyMS44NzQ5TDE4LjAyODYgMjIuMDc1MlpNMjMuODY5MyAyMy44Njg1TDIzLjU3NTggMjQuODI0NEwyNS4zNzg5IDI1LjM3ODFMMjQuODI1MyAyMy41NzVMMjMuODY5MyAyMy44Njg1Wk0yMi4wNzYyIDE4LjAyODNMMjEuODc1OSAxNy4wNDg2TDIwLjc5NyAxNy4yNjkxTDIxLjEyMDIgMTguMzIxOUwyMi4wNzYyIDE4LjAyODNaTTMyIDE2TDMyLjIwMDMgMTYuOTc5N1YxNS4wMjAzTDMyIDE2Wk0yMi4wOTg4IDEzLjk3NjNMMjEuMTQyOCAxMy42ODI4TDIwLjgxOTYgMTQuNzM1NUwyMS44OTg1IDE0Ljk1NkwyMi4wOTg4IDEzLjk3NjNaTTIzLjg2OTMgOC4yMDk2M0wyNC44MjUzIDguNTAzMTVMMjUuMzc4OSA2LjcwMDA3TDIzLjU3NTggNy4yNTM2OEwyMy44NjkzIDguMjA5NjNaTTE1LjAyMDMgMC4yMDAyNTJMMTcuMDYzOCAxMC4xOTg2TDE5LjAyMzMgOS43OTgwOUwxNi45Nzk3IC0wLjIwMDI1MkwxNS4wMjAzIDAuMjAwMjUyWk0xNC45NDA5IDEwLjE3NTVMMTYuOTc5NyAwLjIwMDI1MkwxNS4wMjAzIC0wLjIwMDI1MkwxMi45ODE0IDkuNzc1MDRMMTQuOTQwOSAxMC4xNzU1Wk03LjkxNjk2IDkuMTY1NTlMMTMuNjY3NiAxMC45MzEyTDE0LjI1NDYgOS4wMTkzM0w4LjUwMzk4IDcuMjUzNjhMNy45MTY5NiA5LjE2NTU5Wk0xMC45MzIzIDEzLjY2NzRMOS4xNjY0MyA3LjkxNjEyTDcuMjU0NTEgOC41MDMxNUw5LjAyMDM2IDE0LjI1NDRMMTAuOTMyMyAxMy42Njc0Wk0wLjIwMDI1MiAxNi45Nzk3TDEwLjE3NjYgMTQuOTQwN0w5Ljc3NjA3IDEyLjk4MTJMLTAuMjAwMjUyIDE1LjAyMDNMMC4yMDAyNTIgMTYuOTc5N1pNMTAuMTk5MSAxNy4wNjM5TDAuMjAwMjUyIDE1LjAyMDNMLTAuMjAwMjUyIDE2Ljk3OTdMOS43OTg2NCAxOS4wMjM0TDEwLjE5OTEgMTcuMDYzOVpNOS4xNjY0MyAyNC4xNjJMMTAuOTU0OCAxOC4zMzcyTDkuMDQyOTMgMTcuNzUwMkw3LjI1NDUxIDIzLjU3NUw5LjE2NjQzIDI0LjE2MlpNMTMuNjgyNiAyMS4xNDIzTDcuOTE2OTYgMjIuOTEyNUw4LjUwMzk4IDI0LjgyNDRMMTQuMjY5NyAyMy4wNTQyTDEzLjY4MjYgMjEuMTQyM1pNMTYuOTc5NyAzMS43OTk3TDE0Ljk1NTkgMjEuODk4TDEyLjk5NjQgMjIuMjk4NUwxNS4wMjAzIDMyLjIwMDNMMTYuOTc5NyAzMS43OTk3Wk0xNy4wNDg4IDIxLjg3NDlMMTUuMDIwMyAzMS43OTk3TDE2Ljk3OTcgMzIuMjAwM0wxOS4wMDgzIDIyLjI3NTRMMTcuMDQ4OCAyMS44NzQ5Wk0yNC4xNjI4IDIyLjkxMjVMMTguMzIyMSAyMS4xMTkyTDE3LjczNSAyMy4wMzExTDIzLjU3NTggMjQuODI0NEwyNC4xNjI4IDIyLjkxMjVaTTIxLjEyMDIgMTguMzIxOUwyMi45MTM0IDI0LjE2MkwyNC44MjUzIDIzLjU3NUwyMy4wMzIyIDE3LjczNDhMMjEuMTIwMiAxOC4zMjE5Wk0zMS43OTk3IDE1LjAyMDNMMjEuODc1OSAxNy4wNDg2TDIyLjI3NjQgMTkuMDA4MUwzMi4yMDAzIDE2Ljk3OTdMMzEuNzk5NyAxNS4wMjAzWk0yMS44OTg1IDE0Ljk1NkwzMS43OTk3IDE2Ljk3OTdMMzIuMjAwMyAxNS4wMjAzTDIyLjI5OSAxMi45OTY1TDIxLjg5ODUgMTQuOTU2Wk0yMi45MTM0IDcuOTE2MTJMMjEuMTQyOCAxMy42ODI4TDIzLjA1NDcgMTQuMjY5OEwyNC44MjUzIDguNTAzMTVMMjIuOTEzNCA3LjkxNjEyWk0xOC4zMzcxIDEwLjk1NDNMMjQuMTYyOCA5LjE2NTU5TDIzLjU3NTggNy4yNTM2OEwxNy43NTAxIDkuMDQyMzlMMTguMzM3MSAxMC45NTQzWiIgZmlsbD0iYmxhY2siIG1hc2s9InVybCgjcGF0aC0xLWluc2lkZS0xXzUwMjJfNTEpIi8+Cjwvc3ZnPg=="; // src/utils/localStorage.ts var KEY_WALLET = "currentWallet"; var saveWalletToLocal = (w) => { try { localStorage.setItem(KEY_WALLET, w); } catch (error) { } }; var getWalletFromLocal = () => { return localStorage.getItem(KEY_WALLET) || void 0; }; var clearWalletFromLocal = () => { localStorage.removeItem(KEY_WALLET); return; }; // src/utils/index.ts var UnisatDownload = "https://unisat.io/download"; var MetamaskDownload = "https://metamask.io/download/"; var OkxDownLoad = "https://chromewebstore.google.com/detail/%E6%AC%A7%E6%98%93-web3-%E9%92%B1%E5%8C%85/mcohilncbfahbmgdjkbpemcciiolgcge"; var GateDownLoad = "https://chromewebstore.google.com/detail/gate-wallet/cpmkedoipcpimgecpmgpldfpohjplkpp"; var FoxDownload = "https://foxwallet.com/download"; var TokenpocketDownload = "https://www.tokenpocket.pro/en/download/app"; var XverseDownload = "https://www.xverse.app/download"; var Coin98Download = "https://coin98.com/wallet"; var BinanceDownload = "https://www.binance.com/en/download"; var TomoDownload = "https://tomo.inc/"; var BybitDownload = "https://www.bybit.com/en/download/"; var BitgetDownload = "https://www.bitget.com/zh-CN/download"; var getDownloadUrlByKey = (wallet) => { if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("okx")) return OkxDownLoad; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("unisat")) return UnisatDownload; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("metamask")) return MetamaskDownload; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("gate")) return GateDownLoad; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("fox")) return FoxDownload; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("tokenpocket")) return TokenpocketDownload; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("xverse")) return XverseDownload; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("coin98")) return Coin98Download; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("binance")) return BinanceDownload; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("tomo")) return TomoDownload; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("bybit")) return BybitDownload; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("bitget")) return BitgetDownload; }; // src/components/connectModal/WalletItem.tsx var import_react_device_detect = require("react-device-detect"); // esbuild-scss-modules-plugin:./index.module.scss var digest = "509a885df4e1f302270623c0aa450ac98141de75cf5a07f5b592c530d55623aa"; var classes = { "b2WalletModal": "_b2WalletModal_19olk_1", "header": "_header_19olk_20", "content": "_content_19olk_33", "title": "_title_19olk_37", "row": "_row_19olk_50", "rowItem": "_rowItem_19olk_56", "walletItem": "_walletItem_19olk_59", "left": "_left_19olk_74", "walletLogo": "_walletLogo_19olk_88", "right": "_right_19olk_98", "install": "_install_19olk_103", "privacy": "_privacy_19olk_113", "link": "_link_19olk_120", "overlay": "_overlay_19olk_124" }; var css = `._b2WalletModal_19olk_1{background-color:#fff;border-radius:10px;color:#000;left:50%;min-width:508px;outline:none;overflow-y:auto;position:fixed;top:50%;transform:translate(-50%,-50%);width:680px}@media only screen and (max-width:600px){._b2WalletModal_19olk_1{min-width:100%;width:100%}}._b2WalletModal_19olk_1 ._header_19olk_20{align-items:center;background:#fff8ee;border-top-left-radius:10px;border-top-right-radius:10px;color:#000;display:flex;font-size:22px;font-weight:600;justify-content:space-between;padding:18px 24px;text-transform:capitalize}._b2WalletModal_19olk_1 ._content_19olk_33{padding:20px 24px 40px}._b2WalletModal_19olk_1 ._content_19olk_33 ._title_19olk_37{align-items:center;display:flex;font-size:20px;font-weight:600;gap:12px;margin-bottom:12px}@media only screen and (max-width:600px){._b2WalletModal_19olk_1 ._content_19olk_33 ._title_19olk_37{font-size:18px}}._b2WalletModal_19olk_1 ._content_19olk_33 ._row_19olk_50{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}._b2WalletModal_19olk_1 ._content_19olk_33 ._row_19olk_50 ._rowItem_19olk_56{width:48%}._b2WalletModal_19olk_1 ._content_19olk_33 ._walletItem_19olk_59{align-items:center;border:1px solid #000;border-radius:4px;cursor:pointer;display:flex;justify-content:space-between;margin-bottom:10px;padding:10px 22px}@media only screen and (max-width:600px){._b2WalletModal_19olk_1 ._content_19olk_33 ._walletItem_19olk_59{padding:8px}}._b2WalletModal_19olk_1 ._content_19olk_33 ._walletItem_19olk_59 ._left_19olk_74{align-items:center;display:flex;font-size:1rem;font-weight:700;gap:10px;white-space:nowrap}@media only screen and (max-width:600px){._b2WalletModal_19olk_1 ._content_19olk_33 ._walletItem_19olk_59 ._left_19olk_74{font-weight:400;gap:8px}}._b2WalletModal_19olk_1 ._content_19olk_33 ._walletItem_19olk_59 ._left_19olk_74 ._walletLogo_19olk_88{height:24px;width:24px}@media only screen and (max-width:600px){._b2WalletModal_19olk_1 ._content_19olk_33 ._walletItem_19olk_59 ._left_19olk_74 ._walletLogo_19olk_88{height:20px;width:20px}}._b2WalletModal_19olk_1 ._content_19olk_33 ._walletItem_19olk_59 ._right_19olk_98{align-items:center;display:flex;gap:10px}._b2WalletModal_19olk_1 ._content_19olk_33 ._walletItem_19olk_59 ._right_19olk_98 ._install_19olk_103{background:#000;border-radius:20px;color:#fff;cursor:pointer;height:24px;line-height:24px;opacity:1;padding:0 15px}._b2WalletModal_19olk_1 ._privacy_19olk_113{align-items:center;display:flex;flex-wrap:wrap;justify-content:center;margin-bottom:20px}._b2WalletModal_19olk_1 ._privacy_19olk_113 ._link_19olk_120{color:#ffa728}._overlay_19olk_124{background-color:rgba(0,0,0,.5);height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}`; (function() { if (typeof document !== "undefined" && !document.getElementById(digest)) { var ele = document.createElement("style"); ele.id = digest; ele.textContent = css; document.head.appendChild(ele); } })(); var index_module_default = classes; // src/components/connectModal/WalletItem.tsx var import_jsx_runtime = require("react/jsx-runtime"); var WalletItem = ({ walletIcon, walletName, installed }) => { return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)( "div", { className: index_module_default.walletItem, style: { cursor: installed ? "pointer" : "not-allowed" }, children: [ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: index_module_default.left, style: { opacity: installed ? "1" : "0.4" }, children: [ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { className: index_module_default.walletLogo, src: walletIcon, alt: "logo" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: walletName }) ] }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: index_module_default.right, children: !installed && !import_react_device_detect.isMobile && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: index_module_default.install, onClick: () => { const url = getDownloadUrlByKey(walletName); url && window.open(url); }, children: "Install" }) }) ] } ); }; var WalletItem_default = WalletItem; // src/imgs/icon_close.svg var icon_close_default = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMTIuOTk2MiAxMi4wMDA3TDE5Ljc5MzYgNS4yMDI3M0MxOS44NTkgNS4xMzczNCAxOS45MTA5IDUuMDU5NzIgMTkuOTQ2NCA0Ljk3NDI5QzE5Ljk4MTggNC44ODg4NiAyMCA0Ljc5NzMgMjAgNC43MDQ4M0MyMCA0LjYxMjM3IDE5Ljk4MTggNC41MjA4IDE5Ljk0NjQgNC40MzUzN0MxOS45MTA5IDQuMzQ5OTUgMTkuODU5IDQuMjcyMzIgMTkuNzkzNiA0LjIwNjk0QzE5LjcyODIgNC4xNDE1NSAxOS42NTA1IDQuMDg5NjkgMTkuNTY1IDQuMDU0M0MxOS40Nzk1IDQuMDE4OTIgMTkuMzg3OSA0LjAwMDcgMTkuMjk1MyA0LjAwMDdDMTkuMjAyOCA0LjAwMDcgMTkuMTExMiA0LjAxODkyIDE5LjAyNTcgNC4wNTQzQzE4Ljk0MDIgNC4wODk2OSAxOC44NjI1IDQuMTQxNTUgMTguNzk3MSA0LjIwNjk0TDEyLjAwMDQgMTEuMDA0OUw1LjIwMjkyIDQuMjA2MjNDNS4xMzc0OSA0LjE0MDg1IDUuMDU5ODEgNC4wODg5OCA0Ljk3NDMyIDQuMDUzNkM0Ljg4ODgyIDQuMDE4MjEgNC43OTcxOSA0IDQuNzA0NjYgNEM0LjYxMjEyIDQgNC41MjA0OSA0LjAxODIxIDQuNDM1IDQuMDUzNkM0LjM0OTUgNC4wODg5OCA0LjI3MTgyIDQuMTQwODUgNC4yMDYzOSA0LjIwNjIzQzQuMTQwOTYgNC4yNzE2MiA0LjA4OTA1IDQuMzQ5MjQgNC4wNTM2NCA0LjQzNDY3QzQuMDE4MjMgNC41MjAxIDQgNC42MTE2NiA0IDQuNzA0MTNDNCA0Ljc5NjYgNC4wMTgyMyA0Ljg4ODE2IDQuMDUzNjQgNC45NzM1OUM0LjA4OTA1IDUuMDU5MDIgNC4xNDA5NiA1LjEzNjY0IDQuMjA2MzkgNS4yMDIwMkwxMS4wMDM4IDEyTDQuMjA2MzkgMTguNzk4QzQuMTQwOTYgMTguODYzNCA0LjA4OTA1IDE4Ljk0MSA0LjA1MzY0IDE5LjAyNjRDNC4wMTgyMyAxOS4xMTE4IDQgMTkuMjAzNCA0IDE5LjI5NTlDNCAxOS4zODgzIDQuMDE4MjMgMTkuNDc5OSA0LjA1MzY0IDE5LjU2NTNDNC4wODkwNSAxOS42NTA4IDQuMTQwOTYgMTkuNzI4NCA0LjIwNjM5IDE5Ljc5MzhDNC4yNzE4MiAxOS44NTkxIDQuMzQ5NSAxOS45MTEgNC40MzUgMTkuOTQ2NEM0LjUyMDQ5IDE5Ljk4MTggNC42MTIxMiAyMCA0LjcwNDY2IDIwQzQuNzk3MTkgMjAgNC44ODg4MiAxOS45ODE4IDQuOTc0MzIgMTkuOTQ2NEM1LjA1OTgxIDE5LjkxMSA1LjEzNzQ5IDE5Ljg1OTEgNS4yMDI5MiAxOS43OTM4TDEyLjAwMDQgMTIuOTk1OEwxOC43OTcxIDE5Ljc5MzhDMTguODYyNSAxOS44NTkxIDE4Ljk0MDIgMTkuOTExIDE5LjAyNTcgMTkuOTQ2NEMxOS4xMTEyIDE5Ljk4MTggMTkuMjAyOCAyMCAxOS4yOTUzIDIwQzE5LjM4NzkgMjAgMTkuNDc5NSAxOS45ODE4IDE5LjU2NSAxOS45NDY0QzE5LjY1MDUgMTkuOTExIDE5LjcyODIgMTkuODU5MSAxOS43OTM2IDE5Ljc5MzhDMTkuODU5IDE5LjcyODQgMTkuOTEwOSAxOS42NTA4IDE5Ljk0NjQgMTkuNTY1M0MxOS45ODE4IDE5LjQ3OTkgMjAgMTkuMzg4MyAyMCAxOS4yOTU5QzIwIDE5LjIwMzQgMTkuOTgxOCAxOS4xMTE4IDE5Ljk0NjQgMTkuMDI2NEMxOS45MTA5IDE4Ljk0MSAxOS44NTkgMTguODYzNCAxOS43OTM2IDE4Ljc5OEwxMi45OTYyIDEyLjAwMDdaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4="; // src/components/connectModal/ModalHeader.tsx var import_jsx_runtime2 = require("react/jsx-runtime"); var ModalHeader = ({ handleCloseConnectModal }) => { return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: index_module_default.header, children: [ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: index_module_default.tip, children: "Please connect a wallet" }), /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("img", { onClick: handleCloseConnectModal, src: icon_close_default, alt: "close" }) ] }); }; var ModalHeader_default = ModalHeader; // src/components/connectModal/index.tsx var import_btc_connectkit2 = require("@particle-network/btc-connectkit"); // src/hooks/useB2Disconnect.ts var import_wagmi = require("wagmi"); var import_react = require("react"); var import_btc_connectkit = require("@particle-network/btc-connectkit"); // src/utils/wallet/index.ts var import_react_device_detect2 = require("react-device-detect"); var BtcWalletArr = [ "okx_btc" /* WALLET_OKX_BTC */, "tomo_btc" /* WALLET_TOMO_BTC */, "unisat" /* WALLET_UNISAT */, "bybit_btc" /* WALLET_BYBIT_BTC */, "coin98_btc" /* WALLET_COIN98_BTC */, "fox_btc" /* WALLET_FOX_BTC */, "bitget_btc" /* WALLET_BITGET_BTC */, "binance_btc" /* WALLET_BINANCE_BTC */, "xverse" /* WALLET_XVERSE */, "gate_btc" /* WALLET_GATE_BTC */ ]; var EvmWalletArr = [ "gate" /* WALLET_GATE */, "metamask" /* WALLET_METAMASK */, "bybit_evm" /* WALLET_BYBIT_EVM */, "okx_evm" /* WALLET_OKX_EVM */, "tomo_evm" /* WALLET_TOMO_EVM */, "coin98_evm" /* WALLET_COIN98_EVM */, "fox_evm" /* WALLET_FOX_EVM */, "bitget_evm" /* WALLET_BITGET_EVM */, "tokenpocket" /* WALLET_TOKENPOCKET */, "binance_evm" /* WALLET_BINANCE_EVM */ ]; var defaultInstalledMap = { metamask: false, unisat: false, okx_btc: false, okx_evm: false, gate: false, gate_btc: false, tomo_evm: false, tomo_btc: false, bybit_evm: false, bybit_btc: false, coin98_btc: false, coin98_evm: false, fox_btc: false, fox_evm: false, tokenpocket: false, bitget_evm: false, bitget_btc: false, binance_evm: false, binance_btc: false, xverse: false }; var evmWalletNameTransformer = (wallet) => { let name; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("metamask")) { name = "metamask" /* WALLET_METAMASK */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("gate")) { name = "gate" /* WALLET_GATE */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("okx")) { name = "okx_evm" /* WALLET_OKX_EVM */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("bybit")) { name = "bybit_evm" /* WALLET_BYBIT_EVM */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("tomo")) { name = "tomo_evm" /* WALLET_TOMO_EVM */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("coin98")) { name = "coin98_evm" /* WALLET_COIN98_EVM */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("fox")) { name = "fox_evm" /* WALLET_FOX_EVM */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("bitget")) { name = "bitget_evm" /* WALLET_BITGET_EVM */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("tokenpocket")) { name = "tokenpocket" /* WALLET_TOKENPOCKET */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("binance")) { name = "binance_evm" /* WALLET_BINANCE_EVM */; } return name; }; var btcWalletNameTransformer = (wallet) => { let name; if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("unisat")) { name = "unisat" /* WALLET_UNISAT */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("okx")) { name = "okx_btc" /* WALLET_OKX_BTC */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("gate")) { name = "gate_btc" /* WALLET_GATE_BTC */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("tomo")) { name = "tomo_btc" /* WALLET_TOMO_BTC */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("bybit")) { name = "bybit_btc" /* WALLET_BYBIT_BTC */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("coin98")) { name = "coin98_btc" /* WALLET_COIN98_BTC */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("fox")) { name = "fox_btc" /* WALLET_FOX_BTC */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("xverse")) { name = "xverse" /* WALLET_XVERSE */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("bitget")) { name = "bitget_btc" /* WALLET_BITGET_BTC */; } if (wallet == null ? void 0 : wallet.toLocaleLowerCase().includes("binance")) { name = "binance_btc" /* WALLET_BINANCE_BTC */; } return name; }; var checkWalletInstall = (i) => { var _a, _b; const installed = __spreadValues({}, i); if (window.unisat) installed.unisat = true; if (window.ethereum) installed.metamask = true; if (window.gatewallet) { installed.gate = true; installed.gate_btc = true; } if (window.okxwallet) { installed.okx_btc = true; installed.okx_evm = true; } if (window.bybitWallet) { installed.bybit_evm = true; installed.bybit_btc = true; } if (window.tomo_evm) { installed.tomo_btc = true; installed.tomo_evm = true; } if (window.coin98) { installed.coin98_btc = true; installed.coin98_evm = true; } if (window.foxwallet) { installed.fox_btc = true; installed.fox_evm = true; } if (!import_react_device_detect2.isMobile) { installed.binance_evm = true; } if (import_react_device_detect2.isMobile && ((_a = window == null ? void 0 : window.ethereum) == null ? void 0 : _a.isBinance)) { installed.binance_evm = true; } if ((_b = window == null ? void 0 : window.binancew3w) == null ? void 0 : _b.bitcoin) { installed.binance_btc = true; } if (window.bitkeep) { installed.bitget_btc = true; installed.bitget_evm = true; } if (window.tokenpocket) { installed.tokenpocket = true; } if (window.XverseProviders) { installed.xverse = true; } return installed; }; var getBtcWalletName = (wallet) => { if (wallet.toLowerCase().includes("unisat")) return "UniSat Wallet"; if (wallet.toLowerCase().includes("okx")) return "OKX Wallet"; if (wallet.toLocaleLowerCase().includes("tomo")) return "Tomo Wallet"; if (wallet.toLocaleLowerCase().includes("bybit")) return "Bybit Wallet"; if (wallet.toLocaleLowerCase().includes("coin98")) return "Coin98 Wallet"; if (wallet.toLocaleLowerCase().includes("fox")) return "Fox Wallet"; if (wallet.toLocaleLowerCase().includes("bitget")) return "Bitget Wallet"; if (wallet.toLocaleLowerCase().includes("xverse")) return "Xverse Wallet"; if (wallet.toLocaleLowerCase().includes("binance")) return "Binance Wallet"; if (wallet.toLocaleLowerCase().includes("gate")) return "Gate Wallet"; return ""; }; // src/hooks/useB2Disconnect.ts var useB2Disconnect = () => { const { setCurrentWallet, currentWallet } = useCurrentWallet(); const { openConnectModal, disconnect: disconnectBtc } = (0, import_btc_connectkit.useConnectModal)(); const { isConnected } = (0, import_wagmi.useAccount)(); const { disconnect } = (0, import_wagmi.useDisconnect)(); const handleDisconnect = (0, import_react.useCallback)(() => { if (currentWallet && EvmWalletArr.includes(currentWallet) && isConnected) { disconnect(); } else { disconnectBtc && disconnectBtc(); } setCurrentWallet(void 0); clearWalletFromLocal(); }, [currentWallet]); return { disconnect: handleDisconnect }; }; // src/utils/wallet/getWalletIconByName.ts var getWalletIconByName = (name) => { if (name.toLowerCase().includes("metamask")) return "https://b2-static.bsquared.network/wallet/metamask.png"; if (name.toLowerCase().includes("okx")) return "https://b2-static.bsquared.network/wallet/okx.png"; if (name.toLowerCase().includes("unisat")) return "https://b2-static.bsquared.network/wallet/unisat.png"; if (name.toLowerCase().includes("tomo")) return "https://b2-static.bsquared.network/wallet/tomo.png"; if (name.toLowerCase().includes("bybit")) return "https://b2-static.bsquared.network/wallet/bybit.png"; if (name.toLowerCase().includes("coin98")) return "https://b2-static.bsquared.network/wallet/icon_coin98.svg"; if (name.toLowerCase().includes("fox")) return "https://b2-static.bsquared.network/wallet/icon_fox.png"; if (name.toLowerCase().includes("binance")) return "https://b2-static.bsquared.network/wallet/icon_binance.svg"; if (name.toLowerCase().includes("tokenpocket")) return "https://b2-static.bsquared.network/wallet/tokenpocket.svg"; if (name.toLowerCase().includes("gate")) return "https://b2-static.bsquared.network/wallet/icon_gate.svg"; if (name.toLowerCase().includes("bitget")) return "https://b2-static.bsquared.network/wallet/bitget_wallet.png"; if (name.toLowerCase().includes("xverse")) return "https://b2-static.bsquared.network/wallet/xverse.png"; return ""; }; // src/components/connectModal/index.tsx var import_jsx_runtime3 = require("react/jsx-runtime"); var SubTitle = ({ title }) => { return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: index_module_default.title, children: [ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("img", { src: icon_type_default, alt: "icon" }), /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { children: title }) ] }); }; var ConnectModal = ({ collection }) => { const { connectAsync, connectors, error, isLoading, pendingConnector } = (0, import_wagmi2.useConnect)(); const { setCurrentWallet } = useCurrentWallet(); const { connectors: btcConnectors, connect: connectBtc } = (0, import_btc_connectkit2.useConnector)(); const { openConnectModal, handleCloseConnectModal } = useB2Modal(); const { isConnected } = (0, import_wagmi2.useAccount)(); const [installedMap, setInstalledMap] = (0, import_react2.useState)(defaultInstalledMap); const { disconnect: disconnectBtc } = useB2Disconnect(); const showEth = (0, import_react2.useMemo)(() => { return collection === "all" /* ALL */ || collection === "eth" /* ETH */; }, [collection]); const showBtc = (0, import_react2.useMemo)(() => { return collection === "all" /* ALL */ || collection === "btc" /* BTC */; }, [collection]); const getInstalled = (0, import_react2.useCallback)((wallet, walletType) => { if (walletType === "evm") { const name = evmWalletNameTransformer(wallet); if (name) return installedMap[name]; } if (walletType === "btc") { const name = btcWalletNameTransformer(wallet); if (name) return installedMap[name]; } return false; }, [installedMap]); const handleClickEthWallet = (c) => __async(void 0, null, function* () { if (!isConnected) { const res = yield connectAsync({ connector: c }); } let name = evmWalletNameTransformer(c.name); name && setCurrentWallet(name); name && saveWalletToLocal(name); handleCloseConnectModal(); }); const connectBtcWallet = (btcWallet) => __async(void 0, null, function* () { try { yield disconnectBtc(); const res = yield connectBtc(btcWallet); const name = btcWalletNameTransformer(btcWallet); name && setCurrentWallet(name); name && saveWalletToLocal(name); handleCloseConnectModal(); } catch (error2) { } }); const getInstalledWallet = () => { if (typeof window === "undefined") return; const o = __spreadValues({}, installedMap); const installed = checkWalletInstall(o); setInstalledMap(installed); }; (0, import_react2.useEffect)(() => { if (openConnectModal) { getInstalledWallet(); } }, [openConnectModal]); const evmWalletNameFormat = (name) => { if (name.toLowerCase().includes("binance")) return "Binance Wallet"; return name; }; return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)( import_react_modal.default, { isOpen: openConnectModal, onRequestClose: handleCloseConnectModal, ariaHideApp: false, className: index_module_default.b2WalletModal, overlayClassName: index_module_default.overlay, children: [ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ModalHeader_default, { handleCloseConnectModal }), /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: index_module_default.content, children: [ showEth && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SubTitle, { title: "Ethereum Wallet" }), /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: index_module_default.row, children: showEth && connectors.map((c) => { const installed = getInstalled(c.name, "evm"); return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( "div", { className: index_module_default.rowItem, onClick: () => { if (installed) { handleClickEthWallet(c); } }, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(WalletItem_default, { installed, walletIcon: getWalletIconByName(c.name) || c.icon, walletName: evmWalletNameFormat(c.name) }) }, c.name ); }) }) ] }), showBtc && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SubTitle, { title: "Bitcoin Wallet" }), /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: index_module_default.row, children: btcConnectors.map((c) => { const installed = getInstalled(c.metadata.id, "btc"); const name = getBtcWalletName(c.metadata.id); return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( "div", { className: index_module_default.rowItem, onClick: () => { if (installed) { connectBtcWallet(c.metadata.id); } }, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(WalletItem_default, { installed, walletIcon: getWalletIconByName(c.metadata.id), walletName: name }) }, c.metadata.id ); }) }) ] }) ] }), /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: index_module_default.privacy, children: [ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: "By logging in I agree to the " }), /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("a", { className: index_module_default.link, target: "_blank", href: "https://www.bsquared.network/terms-of-service", children: "\xA0Terms of Service\xA0" }), " ", /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: " and " }), " ", /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("a", { className: index_module_default.link, target: "_blank", href: "https://www.bsquared.network/privacy-policy", children: "\xA0Privacy Policy" }) ] }) ] } ); }; var connectModal_default = ConnectModal; // src/context/index.tsx var import_btc_connectkit3 = require("@particle-network/btc-connectkit"); var import_jsx_runtime4 = require("react/jsx-runtime"); var globalContextDefaultValues = { openConnectModal: false, handleCloseConnectModal: () => { }, handleOpenConnectModal: () => { }, handleCloseDisconnectModal: () => { }, handleOpenDisconnectModal: () => { }, handleSetWalletCollection: (w) => { }, autoConnect: () => { }, setCurrentWallet: () => { } }; var B2ModalContext = (0, import_react3.createContext)(globalContextDefaultValues); var useB2Modal = () => { const context = (0, import_react3.useContext)(B2ModalContext); return context; }; var B2ModalProvider = ({ children, isAutoConnect = false, btcNetwork = "livenet" }) => { const { connect } = (0, import_btc_connectkit3.useConnector)(); const { accounts } = (0, import_btc_connectkit3.useAccounts)(); const [currentWallet, setCurrentWallet] = (0, import_react3.useState)(); const isBtcConnected = (0, import_react3.useMemo)(() => (accounts == null ? void 0 : accounts.length) || 0 > 0, [accounts]); const [openConnectModal, setOpenConnectModal] = (0, import_react3.useState)(false); const handleCloseConnectModal = () => setOpenConnectModal(false); const handleOpenConnectModal = () => setOpenConnectModal(true); const [openDisconnectModal, setOpenDisconnectModal] = (0, import_react3.useState)(false); const handleOpenDisconnectModal = () => setOpenDisconnectModal(true); const handleCloseDisconnectModal = () => setOpenDisconnectModal(false); const [network, setNetwork] = (0, import_react3.useState)(); const { getNetwork, switchNetwork } = (0, import_btc_connectkit3.useBTCProvider)(); const [walletCollection, setWalletCollection] = (0, import_react3.useState)("all" /* ALL */); const handleSetWalletCollection = (w) => { setWalletCollection(w); }; const autoConnect = () => __async(void 0, null, function* () { const w = getWalletFromLocal(); if (w && EvmWalletArr.includes(w)) { setCurrentWallet(w); return; } if (w === "unisat" /* WALLET_UNISAT */ && !isBtcConnected) { yield connect("unisat"); setCurrentWallet(w); return; } if (w === "gate_btc" /* WALLET_GATE_BTC */ && !isBtcConnected) { yield connect("gate"); setCurrentWallet(w); return; } if (w === "okx_btc" /* WALLET_OKX_BTC */ && !isBtcConnected) { yield connect("okx"); setCurrentWallet(w); return; } if (w === "bybit_btc" /* WALLET_BYBIT_BTC */ && !isBtcConnected) { yield connect("bybit"); setCurrentWallet(w); return; } if (w === "coin98_btc" /* WALLET_COIN98_BTC */ && !isBtcConnected) { yield connect("coin98"); setCurrentWallet(w); return; } if (w === "fox_btc" /* WALLET_FOX_BTC */ && !isBtcConnected) { yield connect("fox"); setCurrentWallet(w); return; } if (w === "xverse" /* WALLET_XVERSE */ && !isBtcConnected) { yield connect("xverse"); setCurrentWallet(w); return; } if (w === "binance_btc" /* WALLET_BINANCE_BTC */ && !isBtcConnected) { yield connect("binance"); setCurrentWallet(w); return; } if (w === "bitget_btc" /* WALLET_BITGET_BTC */ && !isBtcConnected) { yield connect("bitget"); setCurrentWallet(w); return; } }); (0, import_react3.useEffect)(() => { const getNet = () => __async(void 0, null, function* () { const net = yield getNetwork(); setNetwork(net); }); if (accounts.length > 0) { getNet(); } }, [accounts]); (0, import_react3.useEffect)(() => { if (network && network !== btcNetwork) { switchNetwork(btcNetwork); } }, [network, btcNetwork]); (0, import_react3.useEffect)(() => { if (isAutoConnect) { autoConnect(); } }, [isAutoConnect]); const providerValue = { openConnectModal, handleCloseConnectModal, handleOpenConnectModal, openDisconnectModal, handleCloseDisconnectModal, handleOpenDisconnectModal, handleSetWalletCollection, autoConnect, currentWallet, setCurrentWallet }; return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(B2ModalContext.Provider, { value: providerValue, children: [ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(connectModal_default, { collection: walletCollection }), children ] }); }; var useCurrentWallet = () => { const { currentWallet, setCurrentWallet } = useB2Modal(); const chainType = (0, import_react3.useMemo)(() => { if (currentWallet && BtcWalletArr.includes(currentWallet)) return "btc" /* BTC */; if (currentWallet && EvmWalletArr.includes(currentWallet)) return "eth" /* ETH */; return; }, [currentWallet]); return { currentWallet, setCurrentWallet, chainType }; }; var useOpenModal = () => { const { handleCloseConnectModal, handleOpenConnectModal } = useB2Modal(); return { handleOpenConnectModal, handleCloseConnectModal }; }; // src/utils/chains.ts var import_viem = require("viem"); var b2TestHaven = (0, import_viem.defineChain)({ id: 1102, name: "B2-Haven", network: "B2-Haven", nativeCurrency: { decimals: 18, name: "Bitcoin", symbol: "BTC" }, blockExplorers: { default: { name: "B2-Haven", url: "https://haven-explorer.bsquared.network" } }, rpcUrls: { default: { http: ["https://haven-rpc.bsquared.network/"] }, public: { http: ["https://haven-rpc.bsquared.network"] } } }); var b2TestHabitat = (0, import_viem.defineChain)({ id: 1123, name: "B2-Habitat", network: "Habitat Testnet ", nativeCurrency: { decimals: 18, name: "Bitcoin", symbol: "BTC" }, blockExplorers: { default: { name: "B2-Haven", url: "https://habitat-explorer.bsquared.network" } }, rpcUrls: { default: { http: ["https://habitat-public-rpc.bsquared.network"] }, public: { http: ["https://habitat-public-rpc.bsquared.network"] } } }); var b2Testnet = (0, import_viem.defineChain)({ id: 1123, name: "B2-Testnet", network: "B2 Testnet ", nativeCurrency: { decimals: 18, name: "Bitcoin", symbol: "BTC" }, blockExplorers: { default: { name: "B2-Testnet", url: "https://testnet-explorer.bsquared.network" } }, rpcUrls: { default: { http: ["https://b2-testnet.alt.technology"] }, public: { http: ["https://b2-testnet.alt.technology"] } } }); var b2Network = (0, import_viem.defineChain)({ id: 223, name: "B2Network", network: "B2Network", nativeCurrency: { decimals: 18, name: "Bitcoin", symbol: "BTC" }, blockExplorers: { default: { name: "B2Network", url: "https://explorer.bsquared.network/" } }, rpcUrls: { default: { http: ["https://rpc.bsquared.network/"] }, public: { http: ["https://rpc.bsquared.network/"] } } }); // src/utils/wallet/tomoBtcConnector.ts var import_btc_connectkit4 = require("@particle-network/btc-connectkit"); var TomoConnector = class extends import_btc_connectkit4.InjectedConnector { constructor() { super("tomo_btc"); this.metadata = { id: "tomo", name: "Tomo Wallet", icon: "https://b2-static.bsquared.network/wallet/tomo.png", downloadUrl: "https://www.okx.com/download" }; } }; // src/utils/wallet/Coin98BtcConnector.ts var import_btc_connectkit5 = require("@particle-network/btc-connectkit"); var Coin98Connector = class extends import_btc_connectkit5.InjectedConnector { constructor() { super("coin98.bitcoin"); this.metadata = { id: "coin98", name: "Coin98 Wallet", icon: "https://b2-static.bsquared.network/wallet/icon_coin98.svg", downloadUrl: "https://coin98.com/wallet" }; } }; // src/utils/wallet/binanceConnector.ts var import_btc_connectkit6 = require("@particle-network/btc-connectkit"); var BinanceConnector = class extends import_btc_connectkit6.InjectedConnector { constructor() { super("binancew3w.bitcoin"); this.metadata = { id: "binance", name: "Binance Wallet", icon: "https://b2-static.bsquared.network/wallet/icon_binance.svg", downloadUrl: "https://www.binance.com/en/download" }; } }; // src/utils/wallet/foxBtcConnector.ts var import_btc_connectkit7 = require("@particle-network/btc-connectkit"); var FoxConnector = class extends import_btc_connectkit7.InjectedConnector { constructor() { super("foxwallet.bitcoin"); this.metadata = { id: "fox", name: "Fox Wallet", icon: "https://b2-static.bsquared.network/wallet/icon_fox.png", downloadUrl: "https://foxwallet.com/download" }; } }; // src/utils/signedMsgAdapter.ts var import_viem2 = require("viem"); var signedMsgAdapter = (sig, w) => { const { chainTypeCode, walletCode } = getWalletCode(w); if (chainTypeCode === "0x00" /* eth */) { return (0, import_viem2.concatHex)(["0x00", sig, walletCode]); } else { const vrsSigBuff = Buffer.from(sig, "base64"); const v = vrsSigBuff[0] - 31 < 0 ? vrsSigBuff[0] - 27 : vrsSigBuff[0] - 31; const rsvSigBuff = Buffer.concat([ Buffer.from(vrsSigBuff.subarray(1)), Buffer.from([ v ]) ]); return (0, import_viem2.concatHex)([`0x01`, `0x${rsvSigBuff.toString("hex")}`, walletCode]); } }; var getWalletCode = (w) => { let chainTypeCode = "0x"; let walletCode = "0x"; if (BtcWalletArr.includes(w)) { chainTypeCode = "0x01" /* btc */; walletCode = "0x03" /* unisat */; } else { chainTypeCode = "0x00" /* eth */; walletCode = "0x01" /* metamask */; } return { chainTypeCode, walletCode }; }; // src/hooks/useB2Account.tsx var import_btc_connectkit8 = require("@particle-network/btc-connectkit"); var import_react4 = require("react"); var import_wagmi3 = require("wagmi"); var useB2Account = () => { const { address, isConnected } = (0, import_wagmi3.useAccount)(); const { account: evmAccount } = (0, import_btc_connectkit8.useETHProvider)(); const { accounts } = (0, import_btc_connectkit8.useAccounts)(); const isBtcConnected = (0, import_react4.useMemo)(() => accounts[0] ? true : false, [accounts]); const { currentWallet, chainType } = useCurrentWallet(); return { isConnected: chainType === "btc" ? isBtcConnected : chainType === "eth" ? isConnected : false, address: chainType === "btc" ? accounts == null ? void 0 : accounts[0] : chainType === "eth" ? address : "", evmAddress: chainType === "btc" ? evmAccount : chainType === "eth" ? address : "", chainType, currentWallet }; }; // src/hooks/useSignMessage.ts var import_btc_connectkit9 = require("@particle-network/btc-connectkit"); var import_wagmi4 = require("wagmi"); var useSignMessage = () => { const { chainType } = useCurrentWallet(); const { data: client } = (0, import_wagmi4.useWalletClient)(); const { signMessage } = (0, import_btc_connectkit9.useBTCProvider)(); if (chainType === "eth" /* ETH */) return client == null ? void 0 : client.signMessage; if (chainType === "btc" /* BTC */) return signMessage; return; }; //# sourceMappingURL=index.js.map