@b2network/b2-wallet-kit
Version:
#### install
986 lines (958 loc) • 43.1 kB
JavaScript
"use client";
var __defProp = Object.defineProperty;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
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 __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/context/index.tsx
import { createContext, useContext, useEffect as useEffect2, useMemo as useMemo2, useState as useState2 } from "react";
// src/components/connectModal/index.tsx
import { useAccount as useAccount2, useConnect as useEthConnect } from "wagmi";
import Modal from "react-modal";
// 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
import { useCallback as useCallback2, useEffect, useMemo, useState } from "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
import { isMobile } from "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
import { jsx, jsxs } from "react/jsx-runtime";
var WalletItem = ({ walletIcon, walletName, installed }) => {
return /* @__PURE__ */ jsxs(
"div",
{
className: index_module_default.walletItem,
style: {
cursor: installed ? "pointer" : "not-allowed"
},
children: [
/* @__PURE__ */ jsxs("div", { className: index_module_default.left, style: {
opacity: installed ? "1" : "0.4"
}, children: [
/* @__PURE__ */ jsx("img", { className: index_module_default.walletLogo, src: walletIcon, alt: "logo" }),
/* @__PURE__ */ jsx("div", { children: walletName })
] }),
/* @__PURE__ */ jsx("div", { className: index_module_default.right, children: !installed && !isMobile && /* @__PURE__ */ 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
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
var ModalHeader = ({
handleCloseConnectModal
}) => {
return /* @__PURE__ */ jsxs2("div", { className: index_module_default.header, children: [
/* @__PURE__ */ jsx2("div", { className: index_module_default.tip, children: "Please connect a wallet" }),
/* @__PURE__ */ jsx2("img", { onClick: handleCloseConnectModal, src: icon_close_default, alt: "close" })
] });
};
var ModalHeader_default = ModalHeader;
// src/components/connectModal/index.tsx
import { useConnector as useBtcConnector } from "@particle-network/btc-connectkit";
// src/hooks/useB2Disconnect.ts
import { useAccount, useDisconnect } from "wagmi";
import { useCallback } from "react";
import { useConnectModal } from "@particle-network/btc-connectkit";
// src/utils/wallet/index.ts
import { isMobile as isMobile2 } from "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 (!isMobile2) {
installed.binance_evm = true;
}
if (isMobile2 && ((_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 } = useConnectModal();
const { isConnected } = useAccount();
const { disconnect } = useDisconnect();
const handleDisconnect = 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
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
var SubTitle = ({ title }) => {
return /* @__PURE__ */ jsxs3("div", { className: index_module_default.title, children: [
/* @__PURE__ */ jsx3("img", { src: icon_type_default, alt: "icon" }),
/* @__PURE__ */ jsx3("div", { children: title })
] });
};
var ConnectModal = ({ collection }) => {
const { connectAsync, connectors, error, isLoading, pendingConnector } = useEthConnect();
const { setCurrentWallet } = useCurrentWallet();
const { connectors: btcConnectors, connect: connectBtc } = useBtcConnector();
const { openConnectModal, handleCloseConnectModal } = useB2Modal();
const { isConnected } = useAccount2();
const [installedMap, setInstalledMap] = useState(defaultInstalledMap);
const { disconnect: disconnectBtc } = useB2Disconnect();
const showEth = useMemo(() => {
return collection === "all" /* ALL */ || collection === "eth" /* ETH */;
}, [collection]);
const showBtc = useMemo(() => {
return collection === "all" /* ALL */ || collection === "btc" /* BTC */;
}, [collection]);
const getInstalled = useCallback2((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);
};
useEffect(() => {
if (openConnectModal) {
getInstalledWallet();
}
}, [openConnectModal]);
const evmWalletNameFormat = (name) => {
if (name.toLowerCase().includes("binance"))
return "Binance Wallet";
return name;
};
return /* @__PURE__ */ jsxs3(
Modal,
{
isOpen: openConnectModal,
onRequestClose: handleCloseConnectModal,
ariaHideApp: false,
className: index_module_default.b2WalletModal,
overlayClassName: index_module_default.overlay,
children: [
/* @__PURE__ */ jsx3(ModalHeader_default, { handleCloseConnectModal }),
/* @__PURE__ */ jsxs3("div", { className: index_module_default.content, children: [
showEth && /* @__PURE__ */ jsxs3("div", { children: [
/* @__PURE__ */ jsx3(SubTitle, { title: "Ethereum Wallet" }),
/* @__PURE__ */ jsx3("div", { className: index_module_default.row, children: showEth && connectors.map((c) => {
const installed = getInstalled(c.name, "evm");
return /* @__PURE__ */ jsx3(
"div",
{
className: index_module_default.rowItem,
onClick: () => {
if (installed) {
handleClickEthWallet(c);
}
},
children: /* @__PURE__ */ jsx3(WalletItem_default, { installed, walletIcon: getWalletIconByName(c.name) || c.icon, walletName: evmWalletNameFormat(c.name) })
},
c.name
);
}) })
] }),
showBtc && /* @__PURE__ */ jsxs3("div", { children: [
/* @__PURE__ */ jsx3(SubTitle, { title: "Bitcoin Wallet" }),
/* @__PURE__ */ jsx3("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__ */ jsx3(
"div",
{
className: index_module_default.rowItem,
onClick: () => {
if (installed) {
connectBtcWallet(c.metadata.id);
}
},
children: /* @__PURE__ */ jsx3(WalletItem_default, { installed, walletIcon: getWalletIconByName(c.metadata.id), walletName: name })
},
c.metadata.id
);
}) })
] })
] }),
/* @__PURE__ */ jsxs3("div", { className: index_module_default.privacy, children: [
/* @__PURE__ */ jsx3("span", { children: "By logging in I agree to the " }),
/* @__PURE__ */ jsx3("a", { className: index_module_default.link, target: "_blank", href: "https://www.bsquared.network/terms-of-service", children: "\xA0Terms of Service\xA0" }),
" ",
/* @__PURE__ */ jsx3("span", { children: " and " }),
" ",
/* @__PURE__ */ jsx3("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
import { useConnector, useAccounts, useBTCProvider } from "@particle-network/btc-connectkit";
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
var globalContextDefaultValues = {
openConnectModal: false,
handleCloseConnectModal: () => {
},
handleOpenConnectModal: () => {
},
handleCloseDisconnectModal: () => {
},
handleOpenDisconnectModal: () => {
},
handleSetWalletCollection: (w) => {
},
autoConnect: () => {
},
setCurrentWallet: () => {
}
};
var B2ModalContext = createContext(globalContextDefaultValues);
var useB2Modal = () => {
const context = useContext(B2ModalContext);
return context;
};
var B2ModalProvider = ({ children, isAutoConnect = false, btcNetwork = "livenet" }) => {
const { connect } = useConnector();
const { accounts } = useAccounts();
const [currentWallet, setCurrentWallet] = useState2();
const isBtcConnected = useMemo2(() => (accounts == null ? void 0 : accounts.length) || 0 > 0, [accounts]);
const [openConnectModal, setOpenConnectModal] = useState2(false);
const handleCloseConnectModal = () => setOpenConnectModal(false);
const handleOpenConnectModal = () => setOpenConnectModal(true);
const [openDisconnectModal, setOpenDisconnectModal] = useState2(false);
const handleOpenDisconnectModal = () => setOpenDisconnectModal(true);
const handleCloseDisconnectModal = () => setOpenDisconnectModal(false);
const [network, setNetwork] = useState2();
const { getNetwork, switchNetwork } = useBTCProvider();
const [walletCollection, setWalletCollection] = useState2("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;
}
});
useEffect2(() => {
const getNet = () => __async(void 0, null, function* () {
const net = yield getNetwork();
setNetwork(net);
});
if (accounts.length > 0) {
getNet();
}
}, [accounts]);
useEffect2(() => {
if (network && network !== btcNetwork) {
switchNetwork(btcNetwork);
}
}, [network, btcNetwork]);
useEffect2(() => {
if (isAutoConnect) {
autoConnect();
}
}, [isAutoConnect]);
const providerValue = {
openConnectModal,
handleCloseConnectModal,
handleOpenConnectModal,
openDisconnectModal,
handleCloseDisconnectModal,
handleOpenDisconnectModal,
handleSetWalletCollection,
autoConnect,
currentWallet,
setCurrentWallet
};
return /* @__PURE__ */ jsxs4(B2ModalContext.Provider, { value: providerValue, children: [
/* @__PURE__ */ jsx4(connectModal_default, { collection: walletCollection }),
children
] });
};
var useCurrentWallet = () => {
const { currentWallet, setCurrentWallet } = useB2Modal();
const chainType = useMemo2(() => {
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
import { defineChain } from "viem";
var b2TestHaven = 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 = 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 = 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 = 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
import { InjectedConnector } from "@particle-network/btc-connectkit";
var TomoConnector = class extends 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
import { InjectedConnector as InjectedConnector2 } from "@particle-network/btc-connectkit";
var Coin98Connector = class extends InjectedConnector2 {
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
import { InjectedConnector as InjectedConnector3 } from "@particle-network/btc-connectkit";
var BinanceConnector = class extends InjectedConnector3 {
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
import { InjectedConnector as InjectedConnector4 } from "@particle-network/btc-connectkit";
var FoxConnector = class extends InjectedConnector4 {
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
import { concatHex } from "viem";
var signedMsgAdapter = (sig, w) => {
const { chainTypeCode, walletCode } = getWalletCode(w);
if (chainTypeCode === "0x00" /* eth */) {
return 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 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
import { useAccounts as useAccounts2, useETHProvider } from "@particle-network/btc-connectkit";
import { useMemo as useMemo3 } from "react";
import { useAccount as useAccount3 } from "wagmi";
var useB2Account = () => {
const { address, isConnected } = useAccount3();
const { account: evmAccount } = useETHProvider();
const { accounts } = useAccounts2();
const isBtcConnected = useMemo3(() => 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
import { useBTCProvider as useBTCProvider2 } from "@particle-network/btc-connectkit";
import { useWalletClient } from "wagmi";
var useSignMessage = () => {
const { chainType } = useCurrentWallet();
const { data: client } = useWalletClient();
const { signMessage } = useBTCProvider2();
if (chainType === "eth" /* ETH */)
return client == null ? void 0 : client.signMessage;
if (chainType === "btc" /* BTC */)
return signMessage;
return;
};
export {
B2ModalProvider,
BinanceConnector,
ChainType,
Coin98Connector,
FoxConnector,
TomoConnector,
WalletCollection,
WalletTypes,
b2Network,
b2TestHabitat,
b2TestHaven,
b2Testnet,
getWalletIconByName,
signedMsgAdapter,
useB2Account,
useB2Disconnect,
useB2Modal,
useCurrentWallet,
useOpenModal,
useSignMessage
};
//# sourceMappingURL=index.js.map