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