UNPKG

btc-wallet

Version:

BTC Wallet is a toolkit that enables Bitcoin usage on the NEAR blockchain through the Satoshi protocol.

796 lines (780 loc) 278 kB
"use client"; "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __pow = Math.pow; 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 __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; 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 __accessCheck = (obj, member, msg) => { if (!member.has(obj)) throw TypeError("Cannot " + msg); }; var __privateGet = (obj, member, getter) => { __accessCheck(obj, member, "read from private field"); return getter ? getter.call(obj) : member.get(obj); }; var __privateAdd = (obj, member, value) => { if (member.has(obj)) throw TypeError("Cannot add the same private member more than once"); member instanceof WeakSet ? member.add(obj) : member.set(obj, value); }; 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, { BaseConnector: () => BaseConnector, BinanceConnector: () => BinanceConnector, BitgetConnector: () => BitgetConnector, BtcWalletSelectorContextProvider: () => BtcWalletSelectorContextProvider, BybitConnector: () => BybitConnector, ConnectProvider: () => ConnectProvider, GateConnector: () => GateConnector, InjectedConnector: () => InjectedConnector, MagicEdenConnector: () => MagicEdenConnector, OKXConnector: () => OKXConnector, TokenPocketConnector: () => TokenPocketConnector, UnisatConnector: () => UnisatConnector, WizzConnector: () => WizzConnector, XverseConnector: () => XverseConnector, btcRpcUrls: () => btcRpcUrls, calculateGasFee: () => calculateGasFee, calculateGasLimit: () => calculateGasLimit, calculateGasStrategy: () => calculateGasStrategy, calculateWithdraw: () => calculateWithdraw, checkBridgeTransactionStatus: () => checkBridgeTransactionStatus, checkGasTokenDebt: () => checkGasTokenDebt, checkNewAccount: () => checkNewAccount, checkSatoshiWhitelist: () => checkSatoshiWhitelist, estimateDepositAmount: () => estimateDepositAmount, executeBTCDepositAndAction: () => executeBTCDepositAndAction, getAddressByPublicKeyBase58: () => getAddressByPublicKeyBase58, getBtcBalance: () => getBtcBalance, getBtcGasPrice: () => getBtcGasPrice, getBtcUtxos: () => getBtcUtxos, getCsnaAccountId: () => getCsnaAccountId, getDepositAmount: () => getDepositAmount, getPublicKeyBase58: () => getPublicKeyBase58, getVersion: () => getVersion, getWalletConfig: () => getWalletConfig, getWithdrawTransaction: () => getWithdrawTransaction, nearRpcUrls: () => nearRpcUrls, sendBitcoin: () => sendBitcoin, setupBTCWallet: () => setupBTCWallet, setupWalletSelectorModal: () => setupWalletSelectorModal, signMessage: () => signMessage, useAccountContract: () => useAccountContract, useAccounts: () => useAccounts, useBTCProvider: () => useBTCProvider, useBtcWalletSelector: () => useBtcWalletSelector, useConnectModal: () => useConnectModal, useConnector: () => useConnector, useETHProvider: () => useETHProvider, walletConfig: () => walletConfig }); module.exports = __toCommonJS(src_exports); // src/connector/base.ts var BaseConnector = class { }; // src/icons/bitget.png var bitget_default = "data:image/png;base64,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"; // src/utils/index.ts function shortString(str) { if (Array.isArray(str)) { str = "[" + str.toString() + "]"; } if (str) { if (typeof str.toString === "function") { str = str.toString(); } if (str.length <= 10) { return str; } return `${str.slice(0, 5)}...${str.slice(str.length - 5, str.length)}`; } return ""; } function copyToClipboard(text) { return __async(this, null, function* () { const clipboardCopy = () => __async(this, null, function* () { if (navigator.clipboard) { return navigator.clipboard.writeText(text); } else { const textarea = document.createElement("textarea"); textarea.value = text; textarea.setAttribute("readonly", ""); textarea.style.position = "absolute"; textarea.style.left = "-9999px"; document.body.appendChild(textarea); textarea.select(); const result = document.execCommand("copy"); document.body.removeChild(textarea); if (!result) { throw new Error("Copy to clipboard failed"); } } }); return new Promise((resolve, reject) => { clipboardCopy().then(resolve).catch(reject); }); }); } var defaultTokenIcon = "https://static.particle.network/token-list/defaultToken/default.png"; var ipfsToSrc = (ipfs) => { if (!ipfs || !ipfs.startsWith("ipfs://")) { return ipfs || ""; } return `https://ipfs.particle.network/${encodeURI(ipfs.slice(7))}`; }; var checkBTCVersion = (accountContracts, accountContractKey, version) => { if (!accountContracts[accountContractKey]) { return false; } return accountContracts[accountContractKey].some((item) => item.version === version); }; var delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); function retryOperation(_0, _1) { return __async(this, arguments, function* (operation, shouldStop, { maxRetries = 3, delayMs = 1e3 } = {}) { let retries = 0; while (retries <= maxRetries) { const result = yield operation(); if (shouldStop(result)) { return result; } if (retries === maxRetries) { console.warn("Max retries reached"); return result; } retries++; yield delay(delayMs); } throw new Error("Unexpected execution path"); }); } function toHex(originalString) { const charArray = originalString.split(""); const asciiArray = charArray.map((char) => char.charCodeAt(0)); const hexArray = asciiArray.map((code) => code.toString(16)); let hexString = hexArray.join(""); hexString = hexString.replace(/(^0+)/g, ""); return hexString; } function isMobile() { if (typeof window !== "undefined") { return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( navigator == null ? void 0 : navigator.userAgent ); } return false; } function safeJSONParse(str) { try { return JSON.parse(str); } catch (e) { console.error("safeJSONParse", e); return void 0; } } function safeJSONStringify(obj) { try { return JSON.stringify(obj); } catch (e) { console.error("safeJSONStringify", e); return void 0; } } function storageStore(namespace, options) { if (typeof window === "undefined") return; const _namespace = namespace || "SATOSHI_WALLET_DEFAULT"; const storage5 = (options == null ? void 0 : options.storage) || (window == null ? void 0 : window.localStorage); const namespaceKey = (key) => { return _namespace + ":" + key; }; return { set(key, value) { const _value = safeJSONStringify(value); _value ? storage5.setItem(namespaceKey(key), _value) : storage5.removeItem(namespaceKey(key)); }, get(key) { const _value = storage5.getItem(namespaceKey(key)); return _value ? safeJSONParse(_value) : void 0; }, remove(key) { storage5.removeItem(namespaceKey(key)); }, clearAll: function clearAll() { for (const key in storage5) { if (key.startsWith(namespace + ":")) { storage5.removeItem(key); } } } }; } // src/utils/Dialog.ts var Dialog = class { static injectStyles() { if (!document.querySelector("#dialog-styles")) { const styleSheet = document.createElement("style"); styleSheet.id = "dialog-styles"; styleSheet.textContent = this.style; document.head.appendChild(styleSheet); } } static confirm(options) { return new Promise((resolve) => { this.injectStyles(); const container = document.createElement("div"); container.innerHTML = this.template; document.body.appendChild(container); const titleEl = container.querySelector(".dialog-title"); const messageEl = container.querySelector(".dialog-message"); const confirmBtn = container.querySelector(".dialog-confirm-btn"); const cancelBtn = container.querySelector(".dialog-cancel-btn"); if (options.title) { titleEl.textContent = options.title; } else { titleEl.style.display = "none"; } messageEl.textContent = options.message; const cleanup = () => { document.body.removeChild(container); }; confirmBtn.addEventListener("click", () => { cleanup(); resolve(true); }); cancelBtn.addEventListener("click", () => { cleanup(); resolve(false); }); }); } static alert(options) { const messageEl = options.dangerouslyUseHTML ? { dangerouslySetInnerHTML: { __html: options.message } } : { children: options.message }; return new Promise((resolve) => { var _a; this.injectStyles(); const container = document.createElement("div"); container.innerHTML = this.template; (_a = container.querySelector(".dialog-overlay")) == null ? void 0 : _a.classList.add("dialog-alert"); if (options.closable === false) { const overlay = container.querySelector(".dialog-overlay"); overlay.style.pointerEvents = "none"; const dialogContainer = container.querySelector(".dialog-container"); dialogContainer.style.pointerEvents = "auto"; } document.body.appendChild(container); const titleEl = container.querySelector(".dialog-title"); const messageEl2 = container.querySelector(".dialog-message"); const confirmBtn = container.querySelector(".dialog-confirm-btn"); const cancelBtn = container.querySelector(".dialog-cancel-btn"); if (options.title) { titleEl.textContent = options.title; } else { titleEl.style.display = "none"; } messageEl2.innerHTML = options.message; cancelBtn.style.display = "none"; if (options.closable === false) { confirmBtn.style.display = "none"; } const cleanup = () => { if (options.closable === false) { return; } document.body.removeChild(container); }; confirmBtn.addEventListener("click", () => { cleanup(); resolve(); }); }); } static openModal({ title, titleStyle, content }) { return new Promise((resolve) => { const modalContainer = document.createElement("div"); modalContainer.innerHTML = this.template; document.body.appendChild(modalContainer); const btns = modalContainer.querySelector(".dialog-buttons"); btns.style.display = "none"; this.injectStyles(); const titleEl = modalContainer.querySelector(".dialog-title"); if (title) { titleEl.textContent = title; if (titleStyle) { titleEl.style.cssText = titleStyle; } } else { titleEl.style.display = "none"; } const cleanup = () => { document.body.removeChild(modalContainer); }; const close = () => { cleanup(); resolve(null); }; const messageEl = modalContainer.querySelector(".dialog-message"); messageEl.appendChild(content(resolve, close)); const overlay = modalContainer.querySelector(".dialog-overlay"); overlay.addEventListener("click", (e) => { if (e.target === overlay) { close(); } }); }); } }; Dialog.template = ` <div class="dialog-overlay"> <div class="dialog-container"> <div class="dialog-content"> <div class="dialog-title"></div> <div class="dialog-message"></div> <div class="dialog-buttons"> <button class="dialog-cancel-btn">Cancel</button> <button class="dialog-confirm-btn">OK</button> </div> </div> </div> </div> `; Dialog.style = ` .dialog-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.75); display: flex; align-items: center; justify-content: center; z-index: 999999; backdrop-filter: blur(4px); } .dialog-container { background: #131313; border-radius: 12px; padding: 24px; width: 350px; box-shadow: 0 4px 24px rgba(0, 0, 0, 0.3); } .dialog-title { font-size: 18px; font-weight: 600; margin-bottom: 16px; color: #ffffff; } .dialog-message { margin-bottom: 24px; line-height: 1.6; color: rgba(255, 255, 255, 0.8); font-size: 14px; } .dialog-buttons { display: flex; justify-content: flex-end; gap: 12px; } .dialog-alert .dialog-buttons { justify-content: center; } .dialog-confirm-btn { padding: 8px 24px; background-color: #ff7a00; color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.2s ease; } .dialog-confirm-btn:hover { background-color: #ff8f1f; transform: translateY(-1px); } .dialog-confirm-btn:active { transform: translateY(0); } .dialog-cancel-btn { padding: 8px 24px; background-color: rgba(255, 255, 255, 0.1); color: rgba(255, 255, 255, 0.8); border: none; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.2s ease; } .dialog-cancel-btn:hover { background-color: rgba(255, 255, 255, 0.15); transform: translateY(-1px); } .dialog-cancel-btn:active { transform: translateY(0); } .dialog-overlay { animation: fadeIn 0.2s ease; } .dialog-container { animation: slideIn 0.2s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideIn { from { transform: translateY(-20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .option-list { display: flex; flex-direction: column; gap: 12px; } .option-item { display: flex; align-items: center; gap: 12px; color: #fff; border: 1px solid transparent; background-color: hsla(0, 0%, 100%, .05); border-radius: 8px; padding: 8px 16px; transition: all 0.15s ease; cursor: pointer; font-size: 14px; font-weight: bold; &:hover { border-color: #ff7a00; color: #ff7a00; background-color: hsla(0, 0%, 100%, .08); } } `; // src/connector/universalLink.ts var MobileWalletConnect = class { static getUniversalLink(walletId, url) { switch (walletId) { case "okx": return `okx://wallet/dapp/url?dappUrl=${encodeURIComponent(url)}`; case "bitget": return `bitkeep://bkconnect?action=dapp&url=${encodeURIComponent(url)}`; case "xverse": return `xverse://browser?url=${encodeURIComponent(url)}`; default: return ""; } } static redirectToWallet(walletId) { return __async(this, null, function* () { if (isMobile()) { const currentUrl = window.location.href; const universalLink = this.getUniversalLink(walletId, currentUrl); const showGuideDialog = () => __async(this, null, function* () { var _a; try { yield (_a = navigator.clipboard) == null ? void 0 : _a.writeText(currentUrl); } catch (error) { console.error(error); } yield Dialog.alert({ title: "Open in Wallet Browser", message: ` <div style="display: flex; flex-direction: column; gap: 12px;"> <p>Please follow these steps:</p> <p>1. Open ${walletId} wallet app</p> <p>2. Find the browser feature in the wallet</p> <p>3. Paste the URL (already copied to clipboard)</p> </div> `, dangerouslyUseHTML: true }); }); if (!universalLink) { yield showGuideDialog(); return false; } const openWallet = () => { const iframe = document.createElement("iframe"); iframe.style.display = "none"; iframe.src = universalLink; document.body.appendChild(iframe); setTimeout(() => __async(this, null, function* () { document.body.removeChild(iframe); yield showGuideDialog(); }), 2e3); }; window.location.href = universalLink; setTimeout(openWallet, 100); return true; } return false; }); } }; // src/connector/injected.ts var InjectedConnector = class extends BaseConnector { constructor(propertity) { var _a; super(); this.propertity = propertity; const props = (_a = this.propertity) == null ? void 0 : _a.split("."); if (!this.propertity || props.length > 2) { throw new Error("please input valid propertity"); } } isReady() { if (typeof window !== "undefined") { const props = this.propertity.split("."); if (props.length === 1) { if (typeof window[props[0]] !== "undefined") { return true; } } else { if (typeof window[props[0]] !== "undefined" && typeof window[props[0]][props[1]] !== "undefined") { return true; } } if (isMobile()) { return true; } } return false; } requestAccounts() { return __async(this, null, function* () { if (isMobile()) { try { this.getProvider(); } catch (error) { yield MobileWalletConnect.redirectToWallet(this.metadata.id); return []; } } const accounts = yield this.getProviderOrThrow().requestAccounts(); console.log("network:", yield this.getNetwork()); console.log("\u{1F680} ~ InjectedConnector ~ requestAccounts ~ accounts:", accounts); return accounts; }); } getAccounts() { return __async(this, null, function* () { const accounts = yield this.getProviderOrThrow().getAccounts(); return accounts; }); } getPublicKey() { return __async(this, null, function* () { return this.getProviderOrThrow().getPublicKey(); }); } signMessage(signStr, type) { return __async(this, null, function* () { const addresses = yield this.getAccounts(); if (addresses.length === 0) { throw new Error(`${this.metadata.name} not connected!`); } return this.getProviderOrThrow().signMessage(signStr, type); }); } on(event, handler) { var _a; const provider = this.getProvider(); return (_a = provider == null ? void 0 : provider.on) == null ? void 0 : _a.call(provider, event, handler); } removeListener(event, handler) { var _a; const provider = this.getProvider(); return (_a = provider == null ? void 0 : provider.removeListener) == null ? void 0 : _a.call(provider, event, handler); } getProvider() { if (this.isReady()) { const props = this.propertity.split("."); if (props.length === 1) { return window[props[0]]; } else { return window[props[0]][props[1]]; } } } getProviderOrThrow() { const provider = this.getProvider(); if (!provider) { throw new Error(`${this.metadata.name} is not install or not create Bitcoin wallet!`); } return provider; } getNetwork() { return __async(this, null, function* () { return this.getProviderOrThrow().getNetwork(); }); } switchNetwork(network) { return __async(this, null, function* () { return this.getProviderOrThrow().switchNetwork(network); }); } sendBitcoin(toAddress, satoshis, options) { return __async(this, null, function* () { return this.getProviderOrThrow().sendBitcoin(toAddress, satoshis, options); }); } sendInscription(address, inscriptionId, options) { return __async(this, null, function* () { const result = yield this.getProviderOrThrow().sendInscription(address, inscriptionId, options); if (typeof result === "string") { return { txid: result }; } return result; }); } disconnect() { } }; // src/connector/bitget.ts var BitgetConnector = class extends InjectedConnector { constructor() { super("bitkeep.unisat"); this.metadata = { id: "bitget", name: "Bitget Wallet", icon: bitget_default, downloadUrl: "https://web3.bitget.com/en/wallet-download" }; } }; // src/icons/bybit.png var bybit_default = "data:image/png;base64,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"; // src/connector/bybit.ts var BybitConnector = class extends InjectedConnector { constructor() { super("bybitWallet.bitcoin"); this.metadata = { id: "bybit", name: "Bybit Wallet", icon: bybit_default, downloadUrl: "https://www.bybit.com/download/" }; } }; // src/icons/okx.svg var okx_default = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiBmaWxsPSJibGFjayIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTM5My45NDkgMjE4LjUxOEgyMzEuMDQ5QzIyNC4xMjkgMjE4LjUxOCAyMTguNTE5IDIyNC4xMjggMjE4LjUxOSAyMzEuMDQ4VjM5My45NDhDMjE4LjUxOSA0MDAuODY5IDIyNC4xMjkgNDA2LjQ3OSAyMzEuMDQ5IDQwNi40NzlIMzkzLjk0OUM0MDAuODcgNDA2LjQ3OSA0MDYuNDggNDAwLjg2OSA0MDYuNDggMzkzLjk0OFYyMzEuMDQ4QzQwNi40OCAyMjQuMTI4IDQwMC44NyAyMTguNTE4IDM5My45NDkgMjE4LjUxOFpNNTgxLjk5MiA0MDYuNDc5SDQxOS4wOTJDNDEyLjE3MiA0MDYuNDc5IDQwNi41NjEgNDEyLjA5IDQwNi41NjEgNDE5LjAxVjU4MS45MUM0MDYuNTYxIDU4OC44MzEgNDEyLjE3MiA1OTQuNDQxIDQxOS4wOTIgNTk0LjQ0MUg1ODEuOTkyQzU4OC45MTMgNTk0LjQ0MSA1OTQuNTIzIDU4OC44MzEgNTk0LjUyMyA1ODEuOTFWNDE5LjAxQzU5NC41MjMgNDEyLjA5IDU4OC45MTMgNDA2LjQ3OSA1ODEuOTkyIDQwNi40NzlaTTYwNi45NzQgMjE4LjUxOEg3NjkuODc0Qzc3Ni43OTQgMjE4LjUxOCA3ODIuNDA1IDIyNC4xMjggNzgyLjQwNSAyMzEuMDQ4VjM5My45NDhDNzgyLjQwNSA0MDAuODY5IDc3Ni43OTQgNDA2LjQ3OSA3NjkuODc0IDQwNi40NzlINjA2Ljk3NEM2MDAuMDUzIDQwNi40NzkgNTk0LjQ0MyA0MDAuODY5IDU5NC40NDMgMzkzLjk0OFYyMzEuMDQ4QzU5NC40NDMgMjI0LjEyOCA2MDAuMDUzIDIxOC41MTggNjA2Ljk3NCAyMTguNTE4Wk0zOTMuOTUgNTk0LjQ0MkgyMzEuMDQ5QzIyNC4xMjkgNTk0LjQ0MiAyMTguNTE5IDYwMC4wNTIgMjE4LjUxOSA2MDYuOTczVjc2OS44NzNDMjE4LjUxOSA3NzYuNzkzIDIyNC4xMjkgNzgyLjQwNCAyMzEuMDQ5IDc4Mi40MDRIMzkzLjk1QzQwMC44NyA3ODIuNDA0IDQwNi40OCA3NzYuNzkzIDQwNi40OCA3NjkuODczVjYwNi45NzNDNDA2LjQ4IDYwMC4wNTIgNDAwLjg3IDU5NC40NDIgMzkzLjk1IDU5NC40NDJaTTYwNi45NzQgNTk0LjQ0Mkg3NjkuODc0Qzc3Ni43OTQgNTk0LjQ0MiA3ODIuNDA1IDYwMC4wNTIgNzgyLjQwNSA2MDYuOTczVjc2OS44NzNDNzgyLjQwNSA3NzYuNzkzIDc3Ni43OTQgNzgyLjQwNCA3NjkuODc0IDc4Mi40MDRINjA2Ljk3NEM2MDAuMDUzIDc4Mi40MDQgNTk0LjQ0MyA3NzYuNzkzIDU5NC40NDMgNzY5Ljg3M1Y2MDYuOTczQzU5NC40NDMgNjAwLjA1MiA2MDAuMDUzIDU5NC40NDIgNjA2Ljk3NCA1OTQuNDQyWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="; // src/connector/okx.ts var OKXConnector = class extends InjectedConnector { constructor() { super("okxwallet.bitcoin"); this.metadata = { id: "okx", name: "OKX Wallet", icon: okx_default, downloadUrl: "https://www.okx.com/download" }; } }; // src/icons/tokenpocket.png var tokenpocket_default = "data:image/png;base64,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"; // src/connector/tokenPocket.ts var TokenPocketConnector = class extends InjectedConnector { constructor() { super("tokenpocket.bitcoin"); this.metadata = { id: "tokenpocket", name: "TokenPocket", icon: tokenpocket_default, downloadUrl: "https://www.tokenpocket.pro/en/download/app" }; } }; // src/icons/unisat.svg var unisat_default = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX2ZyYW1lXzIiIGRhdGEtbmFtZT0iZnJhbWUgMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iLTEyIDAgMTAwIDEwMCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogdXJsKCNfbGxfMTI2KTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiB1cmwoI19sbF8xMjMpOwogICAgICB9CgogICAgICAuY2xzLTMgewogICAgICAgIGZpbGw6IHVybCgjX2xsXzEyMSk7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgICBmb250LWZhbWlseTogSmV0QnJhaW5zTW9ub1JvbWFuLU1lZGl1bSwgJ0pldEJyYWlucyBNb25vJzsKICAgICAgICBmb250LXNpemU6IDI0Ljc5cHg7CiAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA1MDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9Il9sbF8xMjYiICB4MT0iOTYxLjY4IiB5MT0iLTQ1LjU3IiB4Mj0iOTg2LjE0IiB5Mj0iLTExMC4wNiIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg3ODAuOTkgNjcxLjcpIHJvdGF0ZSgtMTM0LjczKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwNzAxMDAiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuMzYiIHN0b3AtY29sb3I9IiM3NzM5MGQiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIuNjciIHN0b3AtY29sb3I9IiNlYTgxMDEiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZjRiODUyIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJfbGxfMTIxIiAgeDE9Ijk2NS4xNyIgeTE9Ii0xMzIuNDEiIHgyPSI5MjkuMjIiIHkyPSItNjUuMjIiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzgwLjk5IDY3MS43KSByb3RhdGUoLTEzNC43MykiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMDcwMTAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjM3IiBzdG9wLWNvbG9yPSIjNzczOTBkIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjY3IiBzdG9wLWNvbG9yPSIjZWE4MTAxIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2Y0ZmI1MiIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0iX2xsXzEyMyIgIGN4PSIzNS41OSIgY3k9IjMwLjc2IiBmeD0iMzUuNTkiIGZ5PSIzMC43NiIgcj0iNy40NyIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwIDApIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2Y0Yjg1MiIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii4zMyIgc3RvcC1jb2xvcj0iI2VhODEwMSIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii42NCIgc3RvcC1jb2xvcj0iIzc3MzkwZCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwNzAxMDAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxnIGlkPSJfZnJhbWVfMS0yIiA+CiAgICA8Zz4KICAgICAgPGc+CiAgICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTQuODEsOC45MWwyMC4zNCwyMC4xNGMxLjczLDEuNzEsMi41OCwzLjQ0LDIuNTUsNS4xOS0uMDMsMS43NC0uNzcsMy4