@omnisat/lasereyes 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -60,15 +60,6 @@ var __async = (__this, __arguments, generator) => {
60
60
  step((generator = generator.apply(__this, __arguments)).next());
61
61
  });
62
62
  };
63
- var __forAwait = (obj, it, method) => {
64
- it = obj[Symbol.asyncIterator];
65
- method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((resolve, reject, done) => {
66
- arg = fn.call(obj, arg);
67
- done = arg.done;
68
- return Promise.resolve(arg.value).then((value) => resolve({ value, done }), reject);
69
- }));
70
- return it ? it.call(obj) : (obj = obj[Symbol.iterator](), it = {}, method("next"), method("return"), it);
71
- };
72
63
 
73
64
  // src/index.tsx
74
65
  var src_exports = {};
@@ -78,6 +69,8 @@ __export(src_exports, {
78
69
  LEATHER_TESTNET: () => LEATHER_TESTNET,
79
70
  LaserEyesProvider: () => LaserEyesProvider,
80
71
  MAINNET: () => MAINNET,
72
+ MEMPOOL_SPACE_TESTNET_URL: () => MEMPOOL_SPACE_TESTNET_URL,
73
+ MEMPOOL_SPACE_URL: () => MEMPOOL_SPACE_URL,
81
74
  OYL: () => OYL,
82
75
  P2PKH: () => P2PKH,
83
76
  P2SH: () => P2SH,
@@ -96,22 +89,25 @@ __export(src_exports, {
96
89
  XVERSE_NETWORK: () => XVERSE_NETWORK,
97
90
  XVERSE_TESTNET: () => XVERSE_TESTNET,
98
91
  createConfig: () => createConfig,
92
+ findOrdinalsAddress: () => findOrdinalsAddress,
93
+ findPaymentAddress: () => findPaymentAddress,
94
+ getBTCBalance: () => getBTCBalance,
95
+ getBitcoinNetwork: () => getBitcoinNetwork,
99
96
  getLeatherNetwork: () => getLeatherNetwork,
97
+ getMempoolSpaceUrl: () => getMempoolSpaceUrl,
100
98
  getNetworkForLeather: () => getNetworkForLeather,
101
99
  getNetworkForUnisat: () => getNetworkForUnisat,
102
100
  getNetworkForXverse: () => getNetworkForXverse,
103
101
  getUnisatNetwork: () => getUnisatNetwork,
104
102
  getXverseNetwork: () => getXverseNetwork,
103
+ isBase64: () => isBase64,
104
+ isHex: () => isHex,
105
+ satoshisToBTC: () => satoshisToBTC,
105
106
  useLaserEyes: () => useLaserEyes
106
107
  });
107
108
  module.exports = __toCommonJS(src_exports);
108
109
 
109
- // src/consts/wallets.ts
110
- var OYL = "oyl";
111
- var UNISAT = "unisat";
112
- var XVERSE = "xverse";
113
- var PHANTOM = "phantom";
114
- var LEATHER = "leather";
110
+ // src/consts/networks.ts
115
111
  var XVERSE_NETWORK = "Mainnet";
116
112
  var UNISAT_MAINNET = "livenet";
117
113
  var UNISAT_TESTNET = "testnet";
@@ -164,6 +160,16 @@ var getNetworkForLeather = (network) => {
164
160
  return TESTNET;
165
161
  return MAINNET;
166
162
  };
163
+ var MEMPOOL_SPACE_URL = "https://mempool.space";
164
+ var MEMPOOL_SPACE_TESTNET_URL = "https://mempool.space/testnet";
165
+ var getMempoolSpaceUrl = (network) => network === TESTNET ? MEMPOOL_SPACE_TESTNET_URL : MEMPOOL_SPACE_URL;
166
+
167
+ // src/consts/wallets.ts
168
+ var OYL = "oyl";
169
+ var UNISAT = "unisat";
170
+ var XVERSE = "xverse";
171
+ var PHANTOM = "phantom";
172
+ var LEATHER = "leather";
167
173
  var P2TR = "p2tr";
168
174
  var P2PKH = "p2pkh";
169
175
  var P2WPKH = "p2wpkh";
@@ -208,40 +214,9 @@ var createConfig = (config) => {
208
214
  // src/providers/LaserEyesProvider.tsx
209
215
  var import_react = require("react");
210
216
  var bitcoin2 = __toESM(require("bitcoinjs-lib"));
211
- var import_sats_connect = require("sats-connect");
212
217
 
213
218
  // src/consts/settings.ts
214
219
  var LOCAL_STORAGE_DEFAULT_WALLET = "defaultWallet";
215
- var NETWORK = MAINNET;
216
-
217
- // src/providers/LaserEyesProvider.tsx
218
- var import_address = require("bitcoinjs-lib/src/address");
219
- var import_usehooks_ts = require("usehooks-ts");
220
-
221
- // src/lib/helpers.ts
222
- var bitcoin = __toESM(require("bitcoinjs-lib"));
223
- var getBitcoinNetwork = (network) => {
224
- if (network === "testnet") {
225
- return bitcoin.networks.testnet;
226
- } else if (network === "regtest") {
227
- return bitcoin.networks.regtest;
228
- } else {
229
- return bitcoin.networks.bitcoin;
230
- }
231
- };
232
- var findOrdinalsAddress = (addresses) => {
233
- return addresses.find(
234
- ({ purpose }) => purpose === "ordinals"
235
- );
236
- };
237
- var findPaymentAddress = (addresses) => {
238
- return addresses.find(
239
- ({ purpose }) => purpose === "payment"
240
- );
241
- };
242
-
243
- // src/providers/LaserEyesProvider.tsx
244
- var import_jsx_runtime = require("react/jsx-runtime");
245
220
  var initialWalletContext = {
246
221
  hasOyl: false,
247
222
  hasUnisat: false,
@@ -253,11 +228,7 @@ var initialWalletContext = {
253
228
  address: "",
254
229
  paymentAddress: "",
255
230
  paymentPublicKey: "",
256
- balance: {
257
- confirmed: 0,
258
- unconfirmed: 0,
259
- total: 0
260
- },
231
+ balance: void 0,
261
232
  network: MAINNET,
262
233
  library: null,
263
234
  provider: null,
@@ -280,6 +251,9 @@ var initialWalletContext = {
280
251
  getBalance: () => __async(void 0, null, function* () {
281
252
  return "";
282
253
  }),
254
+ getInscriptions: () => __async(void 0, null, function* () {
255
+ return [];
256
+ }),
283
257
  sendBTC: (to, amount) => __async(void 0, null, function* () {
284
258
  return "";
285
259
  }),
@@ -297,6 +271,57 @@ var initialWalletContext = {
297
271
  return "";
298
272
  })
299
273
  };
274
+
275
+ // src/providers/LaserEyesProvider.tsx
276
+ var import_usehooks_ts = require("usehooks-ts");
277
+
278
+ // src/lib/helpers.ts
279
+ var bitcoin = __toESM(require("bitcoinjs-lib"));
280
+ var import_axios = __toESM(require("axios"));
281
+ var getBitcoinNetwork = (network) => {
282
+ if (network === TESTNET) {
283
+ return bitcoin.networks.testnet;
284
+ } else if (network === REGTEST) {
285
+ return bitcoin.networks.regtest;
286
+ } else {
287
+ return bitcoin.networks.bitcoin;
288
+ }
289
+ };
290
+ var findOrdinalsAddress = (addresses) => {
291
+ return addresses.find(
292
+ ({ purpose }) => purpose === "ordinals"
293
+ );
294
+ };
295
+ var findPaymentAddress = (addresses) => {
296
+ return addresses.find(
297
+ ({ purpose }) => purpose === "payment"
298
+ );
299
+ };
300
+ var getBTCBalance = (address) => __async(void 0, null, function* () {
301
+ try {
302
+ return yield import_axios.default.get(`https://blockchain.info/q/addressbalance/${address}`).then((response) => response.data);
303
+ } catch (error) {
304
+ console.error("Error fetching BTC balance:", error);
305
+ throw new Error("Failed to fetch BTC balance");
306
+ }
307
+ });
308
+ var satoshisToBTC = (satoshis) => {
309
+ if (Number.isNaN(satoshis) || satoshis === void 0)
310
+ return "--";
311
+ const btcValue = satoshis / 1e8;
312
+ return btcValue.toFixed(8);
313
+ };
314
+ var isBase64 = (str) => {
315
+ const base64Regex = /^(?:[A-Za-z0-9+\/]{4})*?(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/;
316
+ return base64Regex.test(str);
317
+ };
318
+ var isHex = (str) => {
319
+ const hexRegex = /^[a-fA-F0-9]+$/;
320
+ return hexRegex.test(str);
321
+ };
322
+
323
+ // src/providers/LaserEyesProvider.tsx
324
+ var import_jsx_runtime = require("react/jsx-runtime");
300
325
  var LaserEyesContext = (0, import_react.createContext)(initialWalletContext);
301
326
  var useLaserEyes = () => {
302
327
  return (0, import_react.useContext)(LaserEyesContext);
@@ -305,7 +330,12 @@ var LaserEyesProvider = ({
305
330
  children,
306
331
  config
307
332
  }) => {
308
- var _a;
333
+ const selfRef = (0, import_react.useRef)({
334
+ accounts: []
335
+ });
336
+ const self = selfRef.current;
337
+ const [library, setLibrary] = (0, import_react.useState)(null);
338
+ const [provider, setProvider] = (0, import_react.useState)();
309
339
  const [connected, setConnected] = (0, import_react.useState)(false);
310
340
  const [isConnecting, setIsConnecting] = (0, import_react.useState)(false);
311
341
  const [accounts, setAccounts] = (0, import_react.useState)([]);
@@ -313,165 +343,31 @@ var LaserEyesProvider = ({
313
343
  const [paymentPublicKey, setPaymentPublicKey] = (0, import_react.useState)("");
314
344
  const [address, setAddress] = (0, import_react.useState)("");
315
345
  const [paymentAddress, setPaymentAddress] = (0, import_react.useState)("");
316
- const [balance, setBalance] = (0, import_react.useState)({
317
- confirmed: 0,
318
- unconfirmed: 0,
319
- total: 0
320
- });
321
- const [network, setNetwork] = (0, import_usehooks_ts.useLocalStorage)("network", (_a = config.network) != null ? _a : NETWORK);
322
- const [library, setLibrary] = (0, import_react.useState)(null);
323
- const [provider, setProvider] = (0, import_react.useState)("");
324
- const [hasOyl, setHasOyl] = (0, import_react.useState)(false);
346
+ const [balance, setBalance] = (0, import_react.useState)();
325
347
  const [hasUnisat, setHasUnisat] = (0, import_react.useState)(false);
326
- const [hasXverse, setHasXverse] = (0, import_react.useState)(false);
327
- const [hasLeather, setHasLeather] = (0, import_react.useState)(false);
348
+ const [network, setNetwork] = (0, import_usehooks_ts.useLocalStorage)("network", MAINNET, {
349
+ initializeWithValue: false
350
+ });
351
+ const defaultWallet = localStorage == null ? void 0 : localStorage.getItem(LOCAL_STORAGE_DEFAULT_WALLET);
328
352
  (0, import_react.useEffect)(() => {
329
353
  if (config) {
330
354
  setNetwork(config.network);
331
- } else {
332
- setNetwork(MAINNET);
355
+ getNetwork().then((foundNetwork) => {
356
+ if (config.network !== foundNetwork) {
357
+ switchNetwork(network);
358
+ } else if (network !== foundNetwork) {
359
+ setNetwork(network);
360
+ }
361
+ });
333
362
  }
334
- }, [config]);
335
- (0, import_react.useEffect)(() => {
336
- const oylLib = window == null ? void 0 : window.oyl;
337
- setHasOyl(!!oylLib);
338
- }, []);
363
+ }, [config, library]);
339
364
  (0, import_react.useEffect)(() => {
340
365
  const unisatLib = window == null ? void 0 : window.unisat;
341
366
  setHasUnisat(!!unisatLib);
342
367
  }, []);
343
368
  (0, import_react.useEffect)(() => {
344
- var _a2;
345
- const xverseLib = (_a2 = window == null ? void 0 : window.XverseProviders) == null ? void 0 : _a2.BitcoinProvider;
346
- setHasXverse(!!xverseLib);
347
- }, []);
348
- (0, import_react.useEffect)(() => {
349
- const leatherLib = window == null ? void 0 : window.LeatherProvider;
350
- setHasLeather(!!leatherLib);
351
- }, []);
352
- const selfRef = (0, import_react.useRef)({
353
- accounts: []
354
- });
355
- const self = selfRef.current;
356
- const connectOyl = () => __async(void 0, null, function* () {
357
- try {
358
- localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, OYL);
359
- const lib = window.oyl;
360
- const result = yield lib.requestAccounts();
361
- setAccounts(result);
362
- setAddress(result[0]);
363
- setPaymentAddress(result[0]);
364
- setLibrary(lib);
365
- setProvider(OYL);
366
- handleAccountsChanged(result);
367
- setConnected(true);
368
- } catch (error) {
369
- throw new Error(`Can't lasereyes to ${OYL} wallet`);
370
- }
371
- });
372
- const connectUnisat = () => __async(void 0, null, function* () {
373
- try {
374
- localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, UNISAT);
375
- const lib = window.unisat;
376
- const result = yield lib.requestAccounts();
377
- setAccounts(result);
378
- setAddress(result[0]);
379
- setPaymentAddress(result[0]);
380
- setLibrary(lib);
381
- setProvider(UNISAT);
382
- handleAccountsChanged(result);
383
- setConnected(true);
384
- yield getNetwork().then((network2) => {
385
- const foundNetwork = getNetworkForUnisat(String(network2));
386
- setNetwork(foundNetwork);
387
- });
388
- } catch (error) {
389
- throw new Error(`Can't lasereyes to ${UNISAT} wallet`);
390
- }
391
- });
392
- const connectXverse = () => __async(void 0, null, function* () {
393
- try {
394
- localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, XVERSE);
395
- let xverseNetwork = getXverseNetwork(NETWORK);
396
- const getAddressOptions = {
397
- payload: {
398
- purposes: ["ordinals", "payment"],
399
- message: "Address for receiving Ordinals and payments",
400
- network: {
401
- type: xverseNetwork
402
- }
403
- },
404
- onFinish: (response) => {
405
- setPublicKey(String(response.addresses[0].publicKey));
406
- setPaymentPublicKey(String(response.addresses[1].publicKey));
407
- const foundAddress = findOrdinalsAddress(response.addresses);
408
- const foundPaymentAddress = findPaymentAddress(response.addresses);
409
- if (foundAddress && foundPaymentAddress) {
410
- setAddress(foundAddress.address);
411
- setPaymentAddress(foundPaymentAddress.address);
412
- setProvider(XVERSE);
413
- setLibrary(window.BitcoinProvider);
414
- }
415
- }
416
- };
417
- yield (0, import_sats_connect.getAddress)(getAddressOptions);
418
- setConnected(true);
419
- } catch (error) {
420
- throw new Error(`Can't lasereyes to ${XVERSE} wallet`);
421
- }
422
- });
423
- const connectLeather = () => __async(void 0, null, function* () {
424
- try {
425
- localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, LEATHER);
426
- const lib = window.LeatherProvider;
427
- const getAddressesResponse = yield lib.request(
428
- "getAddresses"
429
- );
430
- const addressesResponse = getAddressesResponse.result;
431
- const addresses = addressesResponse.addresses;
432
- const leatherAccountsParsed = addresses.map(
433
- (address2) => address2.address
434
- );
435
- const taprootAddress = addresses.find(
436
- (address2) => address2.type === P2TR
437
- );
438
- const segwitAddress = addresses.find(
439
- (address2) => address2.type === P2WPKH
440
- );
441
- setAccounts(leatherAccountsParsed);
442
- setAddress(String(taprootAddress == null ? void 0 : taprootAddress.address));
443
- setPaymentAddress(String(segwitAddress == null ? void 0 : segwitAddress.address));
444
- setLibrary(lib);
445
- setProvider(LEATHER);
446
- handleAccountsChanged(leatherAccountsParsed);
447
- setConnected(true);
448
- yield getNetwork().then((network2) => {
449
- if (!network2) {
450
- setNetwork(MAINNET);
451
- } else {
452
- setNetwork(network2);
453
- }
454
- });
455
- setConnected(true);
456
- } catch (error) {
457
- throw new Error(`Can't lasereyes to ${LEATHER} wallet`);
458
- }
459
- });
460
- const handleAccountsChanged = (_accounts) => {
461
- if (self.accounts[0] === _accounts[0]) {
462
- return;
463
- }
464
- self.accounts = _accounts;
465
- if (_accounts.length > 0) {
466
- setAccounts(_accounts);
467
- setConnected(true);
468
- setAddress(_accounts[0]);
469
- setPaymentAddress(_accounts[0]);
470
- getBasicInfo();
471
- } else {
472
- setConnected(false);
473
- }
474
- };
369
+ setBalance(void 0);
370
+ }, [network]);
475
371
  (0, import_react.useEffect)(() => {
476
372
  if (provider !== UNISAT) {
477
373
  return;
@@ -487,56 +383,73 @@ var LaserEyesProvider = ({
487
383
  };
488
384
  }, [library]);
489
385
  (0, import_react.useEffect)(() => {
490
- const defaultWallet = localStorage == null ? void 0 : localStorage.getItem(
491
- LOCAL_STORAGE_DEFAULT_WALLET
492
- );
493
- if (defaultWallet) {
386
+ if (defaultWallet && !isConnecting) {
494
387
  setProvider(defaultWallet);
495
388
  connect(defaultWallet);
496
389
  }
497
390
  }, []);
498
- const getBasicInfo = () => __async(void 0, null, function* () {
499
- if (provider !== UNISAT)
500
- return;
501
- const publicKey2 = yield library == null ? void 0 : library.getPublicKey();
502
- setPublicKey(String(publicKey2));
503
- const balance2 = yield library == null ? void 0 : library.getBalance();
504
- setBalance(balance2);
505
- const network2 = yield library == null ? void 0 : library.getNetwork();
506
- if (network2) {
507
- setNetwork(network2);
391
+ const connectUnisat = () => __async(void 0, null, function* () {
392
+ try {
393
+ localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, UNISAT);
394
+ const lib = window.unisat;
395
+ const unisatAccounts = yield lib.requestAccounts();
396
+ if (!unisatAccounts)
397
+ throw new Error("No accounts found");
398
+ const unisatPubKey = yield lib.getPublicKey();
399
+ if (!unisatPubKey)
400
+ throw new Error("No public key found");
401
+ setAccounts(unisatAccounts);
402
+ setAddress(unisatAccounts[0]);
403
+ setPaymentAddress(unisatAccounts[0]);
404
+ setPublicKey(unisatPubKey);
405
+ setPaymentPublicKey(unisatPubKey);
406
+ setLibrary(lib);
407
+ setProvider(UNISAT);
408
+ setConnected(true);
409
+ const balance2 = yield lib == null ? void 0 : lib.getBalance();
410
+ setBalance(balance2 == null ? void 0 : balance2.total);
411
+ } catch (error) {
412
+ throw error;
508
413
  }
509
414
  });
510
- const handleNetworkChanged = (network2) => {
511
- let foundNetwork = MAINNET;
512
- if (provider === UNISAT) {
513
- foundNetwork = getNetworkForUnisat(network2);
415
+ const handleAccountsChanged = (_accounts) => {
416
+ if (!_accounts.length) {
417
+ disconnect();
418
+ return;
514
419
  }
515
- if (provider === XVERSE) {
516
- foundNetwork = getNetworkForXverse(network2);
420
+ if (self.accounts[0] === _accounts[0]) {
421
+ return;
517
422
  }
518
- if (provider === LEATHER) {
519
- foundNetwork = getLeatherNetwork(network2);
423
+ self.accounts = _accounts;
424
+ if (_accounts.length > 0) {
425
+ connect(UNISAT);
426
+ } else {
427
+ setConnected(false);
428
+ }
429
+ };
430
+ const handleNetworkChanged = (network2) => {
431
+ try {
432
+ let foundNetwork = MAINNET;
433
+ if (provider === UNISAT) {
434
+ foundNetwork = getNetworkForUnisat(network2);
435
+ setNetwork(foundNetwork);
436
+ connect(provider);
437
+ } else {
438
+ throw new Error("Unsupported wallet");
439
+ }
440
+ } catch (error) {
441
+ throw error;
520
442
  }
521
- setNetwork(foundNetwork);
522
- getBasicInfo();
523
443
  };
524
444
  const connect = (walletName) => __async(void 0, null, function* () {
525
- console.log("connecting");
526
445
  setIsConnecting(true);
527
446
  try {
528
447
  if (!walletName)
529
448
  throw new Error("No wallet provided");
530
- if (walletName === OYL) {
531
- yield connectOyl();
532
- } else if (walletName === UNISAT) {
449
+ if (walletName === UNISAT) {
533
450
  yield connectUnisat();
534
- } else if (walletName === XVERSE) {
535
- yield connectXverse();
536
- } else if (walletName === LEATHER) {
537
- yield connectLeather();
538
451
  } else {
539
- throw new Error("Wallet not found!");
452
+ throw new Error("Unsupported wallet!");
540
453
  }
541
454
  setConnected(true);
542
455
  } catch (error) {
@@ -549,43 +462,24 @@ var LaserEyesProvider = ({
549
462
  });
550
463
  const disconnect = () => {
551
464
  setAddress("");
465
+ setPaymentAddress("");
466
+ setPublicKey("");
467
+ setPaymentPublicKey("");
552
468
  setAccounts([]);
553
- setProvider("");
469
+ setProvider(void 0);
554
470
  setLibrary(null);
555
471
  setConnected(false);
472
+ setBalance(void 0);
556
473
  localStorage == null ? void 0 : localStorage.removeItem(LOCAL_STORAGE_DEFAULT_WALLET);
557
474
  };
558
475
  const requestAccounts = () => __async(void 0, null, function* () {
559
476
  try {
560
477
  if (!library)
561
478
  return;
562
- if (provider === OYL) {
563
- return yield library.requestAccounts();
564
- } else if (provider === UNISAT) {
479
+ if (provider === UNISAT) {
565
480
  return yield library.requestAccounts();
566
- } else if (provider === XVERSE) {
567
- const getAddressOptions = {
568
- payload: {
569
- // @ts-ignore
570
- purposes: ["ordinals", "payment"],
571
- message: "Address for receiving Ordinals and payments",
572
- network: {
573
- type: XVERSE_NETWORK
574
- }
575
- },
576
- onFinish: (response) => __async(void 0, null, function* () {
577
- const foundAddress = findOrdinalsAddress(response.addresses);
578
- setAddress(foundAddress.address);
579
- const foundPaymentAddress = findPaymentAddress(response.addresses);
580
- setPaymentAddress(foundPaymentAddress);
581
- setPublicKey(String(response.addresses[0].publicKey));
582
- setPaymentPublicKey(String(response.addresses[1].publicKey));
583
- }),
584
- onCancel: () => {
585
- throw new Error("User cancelled");
586
- }
587
- };
588
- return [address];
481
+ } else {
482
+ throw new Error("Unsupported wallet");
589
483
  }
590
484
  } catch (error) {
591
485
  throw error;
@@ -595,17 +489,13 @@ var LaserEyesProvider = ({
595
489
  try {
596
490
  if (!library)
597
491
  return;
598
- if (provider === OYL) {
599
- throw new Error("Not implemented");
600
- } else if (provider === UNISAT) {
492
+ if (provider === UNISAT) {
601
493
  const unisatNetwork = yield library == null ? void 0 : library.getNetwork();
602
494
  const foundNetwork = getNetworkForUnisat(unisatNetwork);
603
495
  setNetwork(foundNetwork);
604
496
  return foundNetwork;
605
- } else if (provider === XVERSE) {
606
- throw new Error("Not implemented");
607
- } else if (provider === LEATHER) {
608
- throw new Error("Not implemented");
497
+ } else {
498
+ throw new Error("Unsupported wallet");
609
499
  }
610
500
  } catch (error) {
611
501
  throw error;
@@ -615,14 +505,12 @@ var LaserEyesProvider = ({
615
505
  try {
616
506
  if (!library)
617
507
  return;
618
- if (provider === OYL) {
619
- throw new Error("Not implemented");
620
- } else if (provider === UNISAT) {
508
+ if (provider === UNISAT) {
621
509
  const wantedNetwork = getUnisatNetwork(network2);
622
510
  yield library == null ? void 0 : library.switchNetwork(wantedNetwork);
623
511
  setNetwork(network2);
624
- } else if (provider === XVERSE) {
625
- throw new Error("Not implemented");
512
+ } else {
513
+ throw new Error("Unsupported wallet");
626
514
  }
627
515
  } catch (error) {
628
516
  throw error;
@@ -632,17 +520,13 @@ var LaserEyesProvider = ({
632
520
  try {
633
521
  if (!library)
634
522
  return;
635
- if (provider === OYL) {
523
+ if (provider === UNISAT) {
524
+ const pub = yield library == null ? void 0 : library.getPublicKey();
636
525
  return yield library == null ? void 0 : library.getPublicKey();
637
- } else if (provider === UNISAT) {
638
- return yield library == null ? void 0 : library.getPublicKey();
639
- } else if (provider === XVERSE) {
640
- throw new Error("Not implemented");
641
- } else if (provider === LEATHER) {
642
- throw new Error("Not implemented");
526
+ } else {
527
+ throw new Error("Unsupported wallet");
643
528
  }
644
529
  } catch (error) {
645
- console.error("error", error);
646
530
  throw error;
647
531
  }
648
532
  });
@@ -650,12 +534,10 @@ var LaserEyesProvider = ({
650
534
  try {
651
535
  if (!library)
652
536
  return;
653
- if (provider === OYL) {
654
- return yield library.getBalance();
655
- } else if (provider === UNISAT) {
537
+ if (provider === UNISAT) {
656
538
  return yield library.getBalance();
657
- } else if (provider === XVERSE) {
658
- throw new Error("Not implemented");
539
+ } else {
540
+ throw new Error("Unsupported wallet");
659
541
  }
660
542
  } catch (error) {
661
543
  throw error;
@@ -665,14 +547,10 @@ var LaserEyesProvider = ({
665
547
  try {
666
548
  if (!library)
667
549
  return;
668
- if (provider === OYL) {
669
- return yield library.getInscriptions(0, 10);
670
- } else if (provider === UNISAT) {
550
+ if (provider === UNISAT) {
671
551
  return yield library.getInscriptions(0, 10);
672
- } else if (provider === XVERSE) {
673
- throw new Error("Not implemented");
674
- } else if (provider === LEATHER) {
675
- throw new Error("Not implemented");
552
+ } else {
553
+ throw new Error("Unsupported wallet");
676
554
  }
677
555
  } catch (error) {
678
556
  throw error;
@@ -680,173 +558,87 @@ var LaserEyesProvider = ({
680
558
  });
681
559
  const sendBTC = (to, amount) => __async(void 0, null, function* () {
682
560
  try {
683
- if (provider === OYL) {
684
- new Error("Not implemented");
685
- } else if (provider === UNISAT) {
686
- return yield library == null ? void 0 : library.sendBitcoin(to, amount);
687
- } else if (provider === XVERSE) {
688
- new Error("Not implemented");
689
- } else if (provider === LEATHER) {
690
- return yield library == null ? void 0 : library.request("sendTransfer", {
691
- address: to,
692
- amount: amount.toString()
693
- });
561
+ if (amount <= 0)
562
+ throw new Error("Amount must be greater than 0");
563
+ if (!Number.isInteger(amount))
564
+ throw new Error("Amount must be an integer");
565
+ if (!library)
566
+ throw new Error("Library not found");
567
+ if (provider === UNISAT) {
568
+ const txId = yield library == null ? void 0 : library.sendBitcoin(to, amount);
569
+ if (!txId)
570
+ throw new Error("Transaction failed");
571
+ return txId;
572
+ } else {
573
+ throw new Error("Unsupported wallet");
694
574
  }
695
575
  } catch (error) {
696
- console.error("error", error);
576
+ throw error;
697
577
  }
698
578
  });
699
579
  const signMessage = (message) => __async(void 0, null, function* () {
700
580
  try {
701
581
  if (!library)
702
582
  return;
703
- if (provider === OYL) {
704
- throw new Error("Not implemented");
705
- } else if (provider === UNISAT) {
583
+ if (provider === UNISAT) {
706
584
  return yield library == null ? void 0 : library.signMessage(message);
707
- } else if (provider === XVERSE) {
708
- throw new Error("Not implemented");
585
+ } else {
586
+ throw new Error("Unsupported wallet");
709
587
  }
710
588
  } catch (error) {
711
- console.error(error);
712
589
  throw error;
713
590
  }
714
591
  });
715
- const signPsbt = (psbt, finalize = false, broadcast = true) => __async(void 0, null, function* () {
592
+ const signPsbt = (psbt, finalize = false, broadcast = false) => __async(void 0, null, function* () {
716
593
  try {
594
+ let psbtHex, psbtBase64;
717
595
  if (!library)
718
596
  return;
719
- if (provider === OYL) {
720
- const response = yield library == null ? void 0 : library.signPsbt(psbt);
721
- return response;
722
- } else if (provider === UNISAT) {
723
- const txHex = yield library == null ? void 0 : library.signPsbt(psbt, {
597
+ if (isHex(psbt)) {
598
+ psbtBase64 = bitcoin2.Psbt.fromHex(psbt).toBase64();
599
+ psbtHex = psbt;
600
+ } else if (isBase64(psbt)) {
601
+ psbtHex = bitcoin2.Psbt.fromBase64(psbt).toHex();
602
+ psbtBase64 = psbt;
603
+ } else {
604
+ throw new Error("Invalid PSBT format");
605
+ }
606
+ if (provider === UNISAT) {
607
+ const signedPsbt = yield library == null ? void 0 : library.signPsbt(psbtHex, {
724
608
  autoFinalized: finalize
725
609
  });
726
- const signedPsbt = bitcoin2.Psbt.fromHex(txHex);
727
- return {
728
- signedPsbtHex: signedPsbt.toHex(),
729
- signedPsbtBase64: signedPsbt.toBase64()
730
- };
731
- } else if (provider === XVERSE) {
732
- const toSignPsbt = bitcoin2.Psbt.fromBase64(String(psbt), {
733
- network: getBitcoinNetwork(network)
734
- });
735
- const inputs = toSignPsbt.data.inputs;
736
- const inputsToSign = [];
737
- const ordinalAddressData = {
738
- address,
739
- signingIndexes: []
740
- };
741
- const paymentsAddressData = {
742
- address: paymentAddress,
743
- signingIndexes: []
744
- };
745
- let counter = 0;
746
- try {
747
- for (var iter = __forAwait(inputs), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
748
- let input = temp.value;
749
- const { script } = input.witnessUtxo;
750
- const addressFromScript = (0, import_address.fromOutputScript)(
751
- script,
752
- getBitcoinNetwork(network)
753
- );
754
- if (addressFromScript === paymentAddress) {
755
- paymentsAddressData.signingIndexes.push(Number(counter));
756
- } else if (addressFromScript === address) {
757
- ordinalAddressData.signingIndexes.push(Number(counter));
758
- }
759
- counter++;
760
- }
761
- } catch (temp) {
762
- error = [temp];
763
- } finally {
764
- try {
765
- more && (temp = iter.return) && (yield temp.call(iter));
766
- } finally {
767
- if (error)
768
- throw error[0];
769
- }
770
- }
771
- if (ordinalAddressData.signingIndexes.length > 0) {
772
- inputsToSign.push(ordinalAddressData);
610
+ const psbtSignedPsbt = bitcoin2.Psbt.fromHex(signedPsbt);
611
+ if (finalize && broadcast) {
612
+ const txId = yield pushPsbt(signedPsbt);
613
+ return {
614
+ signedPsbtHex: psbtSignedPsbt.toHex(),
615
+ signedPsbtBase64: psbtSignedPsbt.toBase64(),
616
+ txId
617
+ };
773
618
  }
774
- if (paymentsAddressData.signingIndexes.length > 0) {
775
- inputsToSign.push(paymentsAddressData);
776
- }
777
- let txId = "";
778
- let signedPsbtHex, signedPsbtBase64;
779
- const xverseNetwork = getXverseNetwork(network);
780
- const signPsbtOptions = {
781
- payload: {
782
- network: {
783
- type: xverseNetwork
784
- },
785
- message: "Sign Transaction",
786
- psbtBase64: toSignPsbt.toBase64(),
787
- broadcast,
788
- inputsToSign
789
- },
790
- onFinish: (response) => {
791
- if (response.txId) {
792
- txId = response.txId;
793
- } else if (response.psbtBase64) {
794
- const signedPsbt = bitcoin2.Psbt.fromBase64(
795
- String(response.psbtBase64),
796
- {
797
- network: getBitcoinNetwork(network)
798
- }
799
- );
800
- signedPsbtHex = signedPsbt.toHex();
801
- signedPsbtBase64 = signedPsbt.toBase64();
802
- }
803
- },
804
- onCancel: () => console.log("Canceled")
805
- };
806
- yield (0, import_sats_connect.signTransaction)(signPsbtOptions);
807
619
  return {
808
- signedPsbtHex,
809
- signedPsbtBase64,
810
- txId
620
+ signedPsbtHex: psbtSignedPsbt.toHex(),
621
+ signedPsbtBase64: psbtSignedPsbt.toBase64(),
622
+ txId: void 0
811
623
  };
624
+ } else {
625
+ throw new Error("Unsupported wallet");
812
626
  }
813
- } catch (error2) {
814
- console.error("error", error2);
815
- throw error2;
627
+ } catch (error) {
628
+ throw error;
816
629
  }
817
630
  });
818
- const pushPsbt = (psbt, finalize = false) => __async(void 0, null, function* () {
631
+ const pushPsbt = (psbt) => __async(void 0, null, function* () {
819
632
  try {
820
633
  if (!library)
821
634
  return;
822
- if (provider === OYL) {
823
- return yield library == null ? void 0 : library.pushPsbt(psbt);
824
- } else if (provider === UNISAT) {
635
+ if (provider === UNISAT) {
825
636
  return yield library == null ? void 0 : library.pushPsbt(psbt);
826
- } else if (provider === XVERSE) {
827
- const signPsbtOptions = {
828
- payload: {
829
- network: {
830
- type: NETWORK
831
- },
832
- message: "Sign Transaction",
833
- psbtBase64: `cHNidP8BAJwCAmO+JvQJxhVDDpm3tV5PmPfzvJOSL4GOdjEOpAAAAAAnrAAA==`,
834
- broadcast: false,
835
- inputsToSign: [
836
- {
837
- address: "33TKH4kkiFPyTLDNmdNsLggyLeAYre57Qm",
838
- signingIndexes: [1]
839
- }
840
- ]
841
- },
842
- onFinish: (response) => {
843
- },
844
- onCancel: () => console.log("Canceled")
845
- };
846
- yield (0, import_sats_connect.signTransaction)(signPsbtOptions);
637
+ } else {
638
+ throw new Error("Unsupported wallet");
847
639
  }
848
640
  } catch (error) {
849
- console.error("error", error);
641
+ throw error;
850
642
  }
851
643
  });
852
644
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -864,10 +656,7 @@ var LaserEyesProvider = ({
864
656
  network,
865
657
  connected,
866
658
  isConnecting,
867
- hasOyl,
868
659
  hasUnisat,
869
- hasXverse,
870
- hasLeather,
871
660
  // functions
872
661
  connect,
873
662
  disconnect,
@@ -876,6 +665,7 @@ var LaserEyesProvider = ({
876
665
  switchNetwork,
877
666
  getPublicKey,
878
667
  getBalance,
668
+ getInscriptions,
879
669
  sendBTC,
880
670
  signPsbt,
881
671
  pushPsbt,
@@ -892,6 +682,8 @@ var LaserEyesProvider = ({
892
682
  LEATHER_TESTNET,
893
683
  LaserEyesProvider,
894
684
  MAINNET,
685
+ MEMPOOL_SPACE_TESTNET_URL,
686
+ MEMPOOL_SPACE_URL,
895
687
  OYL,
896
688
  P2PKH,
897
689
  P2SH,
@@ -910,11 +702,19 @@ var LaserEyesProvider = ({
910
702
  XVERSE_NETWORK,
911
703
  XVERSE_TESTNET,
912
704
  createConfig,
705
+ findOrdinalsAddress,
706
+ findPaymentAddress,
707
+ getBTCBalance,
708
+ getBitcoinNetwork,
913
709
  getLeatherNetwork,
710
+ getMempoolSpaceUrl,
914
711
  getNetworkForLeather,
915
712
  getNetworkForUnisat,
916
713
  getNetworkForXverse,
917
714
  getUnisatNetwork,
918
715
  getXverseNetwork,
716
+ isBase64,
717
+ isHex,
718
+ satoshisToBTC,
919
719
  useLaserEyes
920
720
  });