@b2network/b2-wallet-kit
Version:
#### install
1,012 lines (983 loc) • 46.1 kB
JavaScript
"use client";
;
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