@omnisat/lasereyes 0.0.41 → 0.0.43

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
@@ -61,9 +61,12 @@ var __forAwait = (obj, it, method) => {
61
61
 
62
62
  // src/consts/networks.ts
63
63
  var XVERSE_NETWORK = "Mainnet";
64
- var UNISAT_MAINNET = "livenet";
65
- var UNISAT_TESTNET = "testnet";
66
- var UNISAT_FRACTAL_TESTNET = "unknown";
64
+ var UNISAT_MAINNET = "BITCOIN_MAINNET";
65
+ var UNISAT_TESTNET = "BITCOIN_TESTNET";
66
+ var UNISAT_TESTNET4 = "BITCOIN_TESTNET4";
67
+ var UNISAT_SIGNET = "BITCOIN_SIGNET";
68
+ var UNISAT_FRACTAL_MAINNET = "FRACTAL_BITCOIN_MAINNET";
69
+ var UNISAT_FRACTAL_TESTNET = "FRACTAL_BITCOIN_TESTNET";
67
70
  var OP_WALLET_MAINNET = "livenet";
68
71
  var OP_WALLET_TESTNET = "testnet";
69
72
  var XVERSE_MAINNET = "Mainnet";
@@ -73,11 +76,15 @@ var OKX_MAINNET = "livenet";
73
76
  var OKX_TESTNET = "testnet";
74
77
  var WIZZ_MAINNET = "livenet";
75
78
  var WIZZ_TESTNET = "testnet";
79
+ var WIZZ_TESTNET4 = "testnet4";
80
+ var WIZZ_SIGNET = "signet";
76
81
  var LEATHER_MAINNET = "mainnet";
77
82
  var LEATHER_TESTNET = "testnet";
78
83
  var MAINNET = "mainnet";
79
84
  var SIGNET = "signet";
80
85
  var TESTNET = "testnet";
86
+ var TESTNET4 = "testnet4";
87
+ var FRACTAL_MAINNET = "fractal_mainnet";
81
88
  var FRACTAL_TESTNET = "fractal_testnet";
82
89
  var REGTEST = "regtest";
83
90
  var getXverseNetwork = (network) => {
@@ -101,6 +108,12 @@ var getUnisatNetwork = (network) => {
101
108
  return UNISAT_MAINNET;
102
109
  if (network === TESTNET)
103
110
  return UNISAT_TESTNET;
111
+ if (network === TESTNET4)
112
+ return UNISAT_TESTNET4;
113
+ if (network === SIGNET)
114
+ return UNISAT_SIGNET;
115
+ if (network === FRACTAL_MAINNET)
116
+ return UNISAT_FRACTAL_MAINNET;
104
117
  if (network === FRACTAL_TESTNET)
105
118
  return UNISAT_FRACTAL_TESTNET;
106
119
  return UNISAT_MAINNET;
@@ -110,6 +123,14 @@ var getWizzNetwork = (network) => {
110
123
  return WIZZ_MAINNET;
111
124
  if (network === TESTNET)
112
125
  return WIZZ_TESTNET;
126
+ if (network === TESTNET4)
127
+ return WIZZ_TESTNET4;
128
+ if (network === SIGNET)
129
+ return WIZZ_SIGNET;
130
+ if (network === FRACTAL_TESTNET)
131
+ return WIZZ_TESTNET;
132
+ if (network === FRACTAL_MAINNET)
133
+ return WIZZ_MAINNET;
113
134
  return WIZZ_MAINNET;
114
135
  };
115
136
  var getNetworkForUnisat = (network) => {
@@ -117,6 +138,12 @@ var getNetworkForUnisat = (network) => {
117
138
  return MAINNET;
118
139
  if (network === UNISAT_TESTNET)
119
140
  return TESTNET;
141
+ if (network === UNISAT_TESTNET4)
142
+ return TESTNET4;
143
+ if (network === UNISAT_SIGNET)
144
+ return SIGNET;
145
+ if (network === UNISAT_FRACTAL_MAINNET)
146
+ return FRACTAL_MAINNET;
120
147
  if (network === UNISAT_FRACTAL_TESTNET)
121
148
  return FRACTAL_TESTNET;
122
149
  return MAINNET;
@@ -147,6 +174,14 @@ var getNetworkForWizz = (network) => {
147
174
  return MAINNET;
148
175
  if (network === WIZZ_TESTNET)
149
176
  return TESTNET;
177
+ if (network === WIZZ_TESTNET4)
178
+ return TESTNET4;
179
+ if (network === WIZZ_SIGNET)
180
+ return SIGNET;
181
+ if (network === FRACTAL_TESTNET)
182
+ return TESTNET;
183
+ if (network === FRACTAL_MAINNET)
184
+ return MAINNET;
150
185
  return MAINNET;
151
186
  };
152
187
  var MEMPOOL_SPACE_URL = "https://mempool.space";
@@ -293,18 +328,18 @@ import axios from "axios";
293
328
  // src/lib/urls.ts
294
329
  var MEMPOOL_SPACE_URL2 = "https://mempool.space";
295
330
  var MEMPOOL_SPACE_TESTNET_URL2 = "https://mempool.space/testnet";
296
- var getMempoolSpaceUrl2 = (network) => network === TESTNET ? MEMPOOL_SPACE_TESTNET_URL2 : MEMPOOL_SPACE_URL2;
331
+ var MEMPOOL_SPACE_TESTNET4_URL = "https://mempool.space/testnet4";
332
+ var MEMPOOL_SPACE_SIGNET_URL2 = "https://mempool.space/signet";
333
+ var MEMPOOL_SPACE_FRACTAL_MAINNET_URL = "https://mempool.fractalbitcoin.io";
334
+ var MEMPOOL_SPACE_FRACTAL_TESTNET_URL = "https://mempool-testnet.fractalbitcoin.io/";
335
+ var getMempoolSpaceUrl2 = (network) => network === TESTNET ? MEMPOOL_SPACE_TESTNET_URL2 : network === TESTNET4 ? MEMPOOL_SPACE_TESTNET4_URL : network === SIGNET ? MEMPOOL_SPACE_SIGNET_URL2 : network === FRACTAL_MAINNET ? MEMPOOL_SPACE_FRACTAL_MAINNET_URL : network === FRACTAL_TESTNET ? MEMPOOL_SPACE_FRACTAL_TESTNET_URL : MEMPOOL_SPACE_URL2;
297
336
 
298
337
  // src/lib/helpers.ts
299
338
  import * as ecc from "@bitcoinerlab/secp256k1";
300
339
  bitcoin.initEccLib(ecc);
301
340
  var getBitcoinNetwork = (network) => {
302
- if (network === TESTNET || network === FRACTAL_TESTNET) {
341
+ if (network === TESTNET || network === TESTNET4 || network === SIGNET) {
303
342
  return bitcoin.networks.testnet;
304
- } else if (network === SIGNET) {
305
- return bitcoin.networks.testnet;
306
- } else if (network === REGTEST) {
307
- return bitcoin.networks.regtest;
308
343
  } else {
309
344
  return bitcoin.networks.bitcoin;
310
345
  }
@@ -319,9 +354,10 @@ var findPaymentAddress = (addresses) => {
319
354
  ({ purpose }) => purpose === "payment"
320
355
  );
321
356
  };
322
- var getBTCBalance = (address2) => __async(void 0, null, function* () {
357
+ var getBTCBalance = (address2, network) => __async(void 0, null, function* () {
323
358
  try {
324
- return yield axios.get(`https://blockchain.info/q/addressbalance/${address2}`).then((response) => response.data);
359
+ const utxos = yield getAddressUtxos(address2, network);
360
+ return utxos.reduce((acc, utxo) => acc + utxo.value, 0);
325
361
  } catch (error) {
326
362
  console.error("Error fetching BTC balance:", error);
327
363
  throw new Error("Failed to fetch BTC balance");
@@ -350,13 +386,15 @@ function estimateTxSize(taprootInputCount, nonTaprootInputCount, outputCount) {
350
386
  const totalOutputSize = outputCount * outputSize;
351
387
  return baseTxSize + totalInputSize + totalOutputSize;
352
388
  }
389
+ function getAddressUtxos(address2, network) {
390
+ return __async(this, null, function* () {
391
+ return yield axios.get(`${getMempoolSpaceUrl2(network)}/api/address/${address2}/utxo`).then((response) => response.data);
392
+ });
393
+ }
353
394
  function createSendBtcPsbt(address2, paymentAddress, recipientAddress, amount, paymentPublicKey, network, feeRate = 7) {
354
395
  return __async(this, null, function* () {
355
396
  const isTaprootOnly = address2 === paymentAddress;
356
- const mempoolUrl = `${getMempoolSpaceUrl2(
357
- network
358
- )}/api/address/${paymentAddress}/utxo`;
359
- const utxos = yield axios.get(mempoolUrl).then((response) => response.data);
397
+ const utxos = yield getAddressUtxos(paymentAddress, network);
360
398
  const sortedUtxos = utxos.sort(
361
399
  (a, b) => b.value - a.value
362
400
  );
@@ -457,6 +495,7 @@ var LaserEyesProvider = ({
457
495
  children,
458
496
  config
459
497
  }) => {
498
+ var _a;
460
499
  const selfRef = useRef({
461
500
  accounts: []
462
501
  });
@@ -480,17 +519,19 @@ var LaserEyesProvider = ({
480
519
  const [hasLeather, setHasLeather] = useState(false);
481
520
  const [hasPhantom, setHasPhantom] = useState(false);
482
521
  const [hasWizz, setHasWizz] = useState(false);
483
- const [network, setNetwork] = useLocalStorage("network", MAINNET, {
522
+ const [network, setNetwork] = useLocalStorage("network", (_a = config == null ? void 0 : config.network) != null ? _a : MAINNET, {
484
523
  initializeWithValue: false
485
524
  });
486
525
  useEffect(() => {
487
526
  if (config) {
488
527
  setNetwork(config.network);
489
528
  getNetwork().then((foundNetwork) => {
490
- if (config.network !== foundNetwork) {
491
- switchNetwork(network);
492
- } else if (network !== foundNetwork) {
493
- setNetwork(network);
529
+ try {
530
+ if (config.network !== foundNetwork) {
531
+ switchNetwork(network);
532
+ }
533
+ } catch (e) {
534
+ disconnect();
494
535
  }
495
536
  });
496
537
  }
@@ -515,8 +556,8 @@ var LaserEyesProvider = ({
515
556
  }, []);
516
557
  useEffect(() => {
517
558
  const observer = new MutationObserver(() => {
518
- var _a;
519
- const xverseLib = (_a = window == null ? void 0 : window.XverseProviders) == null ? void 0 : _a.BitcoinProvider;
559
+ var _a2;
560
+ const xverseLib = (_a2 = window == null ? void 0 : window.XverseProviders) == null ? void 0 : _a2.BitcoinProvider;
520
561
  if (xverseLib) {
521
562
  setHasXverse(true);
522
563
  observer.disconnect();
@@ -555,11 +596,11 @@ var LaserEyesProvider = ({
555
596
  }, []);
556
597
  useEffect(() => {
557
598
  const observer = new MutationObserver(() => {
558
- var _a, _b;
599
+ var _a2, _b;
559
600
  let foundOkx;
560
- if (network === TESTNET || network === FRACTAL_TESTNET) {
561
- foundOkx = (_a = window == null ? void 0 : window.okxwallet) == null ? void 0 : _a.bitcoinTestnet;
562
- } else if (network === MAINNET) {
601
+ if (network === TESTNET || network === TESTNET4 || network === SIGNET || network === FRACTAL_TESTNET) {
602
+ foundOkx = (_a2 = window == null ? void 0 : window.okxwallet) == null ? void 0 : _a2.bitcoinTestnet;
603
+ } else if (network === MAINNET || network === FRACTAL_MAINNET) {
563
604
  foundOkx = (_b = window == null ? void 0 : window.okxwallet) == null ? void 0 : _b.bitcoin;
564
605
  }
565
606
  if (foundOkx) {
@@ -587,8 +628,8 @@ var LaserEyesProvider = ({
587
628
  }, []);
588
629
  useEffect(() => {
589
630
  const observer = new MutationObserver(() => {
590
- var _a;
591
- const phantomLib = (_a = window == null ? void 0 : window.phantom) == null ? void 0 : _a.bitcoin;
631
+ var _a2;
632
+ const phantomLib = (_a2 = window == null ? void 0 : window.phantom) == null ? void 0 : _a2.bitcoin;
592
633
  if (phantomLib && phantomLib.isPhantom) {
593
634
  setHasPhantom(true);
594
635
  observer.disconnect();
@@ -665,13 +706,20 @@ var LaserEyesProvider = ({
665
706
  const unisatPubKey = yield lib.getPublicKey();
666
707
  if (!unisatPubKey)
667
708
  throw new Error("No public key found");
668
- const foundNetwork = yield getNetwork();
669
709
  setAccounts(unisatAccounts);
670
710
  setAddress(unisatAccounts[0]);
671
711
  setPaymentAddress(unisatAccounts[0]);
672
712
  setPublicKey(unisatPubKey);
673
713
  setPaymentPublicKey(unisatPubKey);
674
714
  setLibrary(lib);
715
+ yield getNetwork().then((network2) => {
716
+ if (config.network !== network2) {
717
+ switchNetwork(network2);
718
+ }
719
+ });
720
+ getBTCBalance(unisatAccounts[0], network).then((totalBalance) => {
721
+ setBalance(totalBalance);
722
+ });
675
723
  setProvider(UNISAT);
676
724
  setConnected(true);
677
725
  const balance2 = yield lib == null ? void 0 : lib.getBalance();
@@ -679,7 +727,7 @@ var LaserEyesProvider = ({
679
727
  } catch (error) {
680
728
  throw error;
681
729
  }
682
- }), [hasUnisat]);
730
+ }), [hasUnisat, network]);
683
731
  const connectXverse = useCallback(() => __async(void 0, null, function* () {
684
732
  try {
685
733
  localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, XVERSE);
@@ -703,9 +751,11 @@ var LaserEyesProvider = ({
703
751
  setProvider(XVERSE);
704
752
  setLibrary(window.BitcoinProvider);
705
753
  }
706
- getBTCBalance(foundPaymentAddress.address).then((totalBalance) => {
707
- setBalance(totalBalance);
708
- });
754
+ getBTCBalance(foundPaymentAddress.address, network).then(
755
+ (totalBalance) => {
756
+ setBalance(totalBalance);
757
+ }
758
+ );
709
759
  },
710
760
  onCancel: () => {
711
761
  throw new Error(`User canceled lasereyes to ${XVERSE} wallet`);
@@ -734,7 +784,7 @@ var LaserEyesProvider = ({
734
784
  setProvider(OYL);
735
785
  handleAccountsChanged(result);
736
786
  setConnected(true);
737
- getBTCBalance(result[1]).then((totalBalance) => {
787
+ getBTCBalance(result[1], network).then((totalBalance) => {
738
788
  setBalance(totalBalance);
739
789
  });
740
790
  } catch (error) {
@@ -767,9 +817,11 @@ var LaserEyesProvider = ({
767
817
  setProvider(MAGIC_EDEN);
768
818
  setLibrary(window.magicEden.bitcoin);
769
819
  }
770
- getBTCBalance(foundPaymentAddress.address).then((totalBalance) => {
771
- setBalance(totalBalance);
772
- });
820
+ getBTCBalance(foundPaymentAddress.address, network).then(
821
+ (totalBalance) => {
822
+ setBalance(totalBalance);
823
+ }
824
+ );
773
825
  },
774
826
  onCancel: () => {
775
827
  throw new Error(`User canceled lasereyes to ${MAGIC_EDEN} wallet`);
@@ -778,7 +830,6 @@ var LaserEyesProvider = ({
778
830
  throw new Error(`Can't lasereyes to ${MAGIC_EDEN} wallet`);
779
831
  }
780
832
  };
781
- console.log(JSON.stringify(getAddressOptions));
782
833
  yield getAddress(getAddressOptions);
783
834
  setConnected(true);
784
835
  } catch (error) {
@@ -789,28 +840,27 @@ var LaserEyesProvider = ({
789
840
  const connectOkx = () => __async(void 0, null, function* () {
790
841
  try {
791
842
  localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, OKX);
792
- const lib = network === TESTNET || network === FRACTAL_TESTNET ? window.okxwallet.bitcoinTestnet : window.okxwallet.bitcoin;
793
- const okxAccounts = yield lib.requestAccounts();
843
+ const lib = network === TESTNET || network === TESTNET4 || network === FRACTAL_TESTNET ? window.okxwallet.bitcoinTestnet : network === SIGNET ? window.okxwallet.bitcoinSignet : window.okxwallet.bitcoin;
844
+ const okxAccounts = yield lib.connect();
794
845
  if (!okxAccounts)
795
846
  throw new Error("No accounts found");
796
- const okxPubKey = yield lib.getPublicKey();
797
- if (!okxPubKey)
798
- throw new Error("No public key found");
799
- setAccounts(okxAccounts);
800
- setAddress(okxAccounts[0]);
801
- setPaymentAddress(okxAccounts[0]);
802
- setPublicKey(okxPubKey);
803
- setPaymentPublicKey(okxPubKey);
847
+ setAccounts([okxAccounts]);
848
+ setAddress(okxAccounts.address);
849
+ setPaymentAddress(okxAccounts.address);
850
+ setPublicKey(okxAccounts.publicKey);
851
+ setPaymentPublicKey(okxAccounts.publicKey);
804
852
  setLibrary(lib);
805
853
  setProvider(OKX);
806
854
  setConnected(true);
807
855
  const balance2 = yield lib == null ? void 0 : lib.getBalance();
808
856
  setBalance(balance2 == null ? void 0 : balance2.total);
809
857
  } catch (error) {
858
+ console.log("error", error);
810
859
  throw error;
811
860
  }
812
861
  });
813
862
  const connectLeather = useCallback(() => __async(void 0, null, function* () {
863
+ var _a2;
814
864
  try {
815
865
  localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, LEATHER);
816
866
  const lib = window.LeatherProvider;
@@ -828,6 +878,11 @@ var LaserEyesProvider = ({
828
878
  const segwitAddress = addresses.find(
829
879
  (address3) => address3.type === P2WPKH
830
880
  );
881
+ if (((_a2 = String(taprootAddress)) == null ? void 0 : _a2.startsWith("tb")) && network !== TESTNET && network !== TESTNET4 && network !== SIGNET) {
882
+ throw new Error(
883
+ "Please switch networks to testnet in the wallet settings."
884
+ );
885
+ }
831
886
  setAccounts(leatherAccountsParsed);
832
887
  setAddress(String(taprootAddress == null ? void 0 : taprootAddress.address));
833
888
  setPublicKey(String(taprootAddress == null ? void 0 : taprootAddress.publicKey));
@@ -835,20 +890,18 @@ var LaserEyesProvider = ({
835
890
  setPaymentPublicKey(String(segwitAddress == null ? void 0 : segwitAddress.publicKey));
836
891
  setLibrary(lib);
837
892
  setProvider(LEATHER);
838
- const balance2 = yield getBTCBalance(String(segwitAddress == null ? void 0 : segwitAddress.address));
893
+ const balance2 = yield getBTCBalance(
894
+ String(segwitAddress == null ? void 0 : segwitAddress.address),
895
+ network
896
+ );
839
897
  setBalance(balance2);
840
898
  handleAccountsChanged(leatherAccountsParsed);
841
899
  setConnected(true);
842
900
  yield getNetwork().then((network2) => {
843
- if (!network2) {
844
- setNetwork(MAINNET);
845
- } else {
846
- setNetwork(network2);
847
- }
848
901
  });
849
902
  setConnected(true);
850
903
  } catch (error) {
851
- new Error(`Can't lasereyes to ${LEATHER} wallet`);
904
+ throw error;
852
905
  }
853
906
  }), [hasLeather]);
854
907
  const connectPhantom = () => __async(void 0, null, function* () {
@@ -872,7 +925,10 @@ var LaserEyesProvider = ({
872
925
  setPaymentPublicKey(paymentAccount == null ? void 0 : paymentAccount.publicKey);
873
926
  setLibrary(lib);
874
927
  setProvider(PHANTOM);
875
- const balance2 = yield getBTCBalance(String(paymentAccount == null ? void 0 : paymentAccount.address));
928
+ const balance2 = yield getBTCBalance(
929
+ String(paymentAccount == null ? void 0 : paymentAccount.address),
930
+ network
931
+ );
876
932
  setBalance(balance2);
877
933
  setConnected(true);
878
934
  } catch (error) {
@@ -896,9 +952,14 @@ var LaserEyesProvider = ({
896
952
  setPaymentPublicKey(wizzPubKey);
897
953
  setLibrary(lib);
898
954
  setProvider(WIZZ);
955
+ yield getNetwork().then((network2) => {
956
+ if (config.network !== network2) {
957
+ switchNetwork(network2);
958
+ }
959
+ });
960
+ const balance2 = yield getBTCBalance(String(wizzAccounts[0]), network);
961
+ setBalance(balance2);
899
962
  setConnected(true);
900
- const balance2 = yield lib == null ? void 0 : lib.getBalance();
901
- setBalance(balance2 == null ? void 0 : balance2.total);
902
963
  } catch (error) {
903
964
  throw error;
904
965
  }
@@ -916,8 +977,14 @@ var LaserEyesProvider = ({
916
977
  yield connectOyl();
917
978
  } else if (walletName === MAGIC_EDEN) {
918
979
  yield connectMagicEden();
980
+ } else if (walletName === OKX) {
981
+ yield connectOkx();
919
982
  } else if (walletName === LEATHER) {
920
983
  yield connectLeather();
984
+ } else if (walletName === PHANTOM) {
985
+ yield connectPhantom();
986
+ } else if (walletName === WIZZ) {
987
+ yield connectWizz();
921
988
  } else {
922
989
  throw new Error("Unsupported wallet..");
923
990
  }
@@ -925,6 +992,7 @@ var LaserEyesProvider = ({
925
992
  } catch (error) {
926
993
  setIsConnecting(false);
927
994
  disconnect();
995
+ console.log("e", error == null ? void 0 : error.message);
928
996
  throw error;
929
997
  } finally {
930
998
  setIsConnecting(false);
@@ -961,7 +1029,7 @@ var LaserEyesProvider = ({
961
1029
  };
962
1030
  const handleNetworkChanged = (network2) => {
963
1031
  try {
964
- let foundNetwork = MAINNET;
1032
+ let foundNetwork;
965
1033
  if (provider === UNISAT) {
966
1034
  foundNetwork = getNetworkForUnisat(network2);
967
1035
  setNetwork(foundNetwork);
@@ -970,10 +1038,12 @@ var LaserEyesProvider = ({
970
1038
  throw new Error("Not implemented");
971
1039
  } else if (provider === WIZZ) {
972
1040
  foundNetwork = getNetworkForWizz(network2);
973
- setNetwork(foundNetwork);
974
1041
  connect(provider);
975
1042
  } else {
976
- throw new Error("The connected wallet doesn't support this method..");
1043
+ disconnect();
1044
+ throw new Error(
1045
+ "The connected wallet doesn't support programmatic network changes.."
1046
+ );
977
1047
  }
978
1048
  } catch (error) {
979
1049
  throw error;
@@ -982,7 +1052,7 @@ var LaserEyesProvider = ({
982
1052
  const requestAccounts = () => __async(void 0, null, function* () {
983
1053
  try {
984
1054
  if (!library)
985
- return;
1055
+ throw new Error("No wallet connected");
986
1056
  if (provider === UNISAT) {
987
1057
  return yield library.requestAccounts();
988
1058
  } else if (provider === XVERSE) {
@@ -1011,6 +1081,9 @@ var LaserEyesProvider = ({
1011
1081
  } else if (provider === OYL) {
1012
1082
  return yield library.requestAccounts();
1013
1083
  } else if (provider === OKX) {
1084
+ if (network === TESTNET || network === TESTNET4 || network === FRACTAL_TESTNET) {
1085
+ return yield library.connect();
1086
+ }
1014
1087
  return yield library.requestAccounts();
1015
1088
  } else if (provider === LEATHER) {
1016
1089
  localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, LEATHER);
@@ -1036,6 +1109,11 @@ var LaserEyesProvider = ({
1036
1109
  setProvider(LEATHER);
1037
1110
  handleAccountsChanged(leatherAccountsParsed);
1038
1111
  setConnected(true);
1112
+ const balance2 = yield getBTCBalance(
1113
+ String(segwitAddress == null ? void 0 : segwitAddress.address),
1114
+ network
1115
+ );
1116
+ setBalance(balance2);
1039
1117
  yield getNetwork().then((network2) => {
1040
1118
  if (!network2) {
1041
1119
  setNetwork(MAINNET);
@@ -1059,19 +1137,23 @@ var LaserEyesProvider = ({
1059
1137
  throw error;
1060
1138
  }
1061
1139
  });
1062
- const getNetwork = () => __async(void 0, null, function* () {
1063
- var _a;
1140
+ const getNetwork = useCallback(() => __async(void 0, null, function* () {
1141
+ var _a2;
1064
1142
  try {
1065
- if (!library)
1066
- return;
1067
1143
  if (provider === UNISAT) {
1068
- const unisatNetwork = yield library == null ? void 0 : library.getNetwork();
1069
- const foundNetwork = getNetworkForUnisat(unisatNetwork);
1070
- setNetwork(foundNetwork);
1071
- return foundNetwork;
1144
+ const unisatNetwork = yield library == null ? void 0 : library.getChain();
1145
+ return getNetworkForUnisat(unisatNetwork.enum);
1072
1146
  } else if (provider === XVERSE) {
1073
1147
  if (address2.slice(0, 1) === "t") {
1074
- return TESTNET;
1148
+ if (network === TESTNET) {
1149
+ return TESTNET;
1150
+ } else if (network === TESTNET4) {
1151
+ return TESTNET4;
1152
+ } else if (network === SIGNET) {
1153
+ return SIGNET;
1154
+ } else if (network === FRACTAL_TESTNET) {
1155
+ return FRACTAL_TESTNET;
1156
+ }
1075
1157
  }
1076
1158
  return MAINNET;
1077
1159
  } else if (provider === OYL) {
@@ -1085,12 +1167,32 @@ var LaserEyesProvider = ({
1085
1167
  }
1086
1168
  return MAINNET;
1087
1169
  } else if (provider === OKX) {
1170
+ if (address2.slice(0, 1) === "t") {
1171
+ if (network === TESTNET) {
1172
+ return TESTNET;
1173
+ } else if (network === TESTNET4) {
1174
+ return TESTNET4;
1175
+ } else if (network === SIGNET) {
1176
+ return SIGNET;
1177
+ } else if (network === FRACTAL_TESTNET) {
1178
+ return FRACTAL_TESTNET;
1179
+ }
1180
+ return TESTNET;
1181
+ }
1088
1182
  const okxNetwork = yield library == null ? void 0 : library.getNetwork();
1089
1183
  const foundNetwork = getNetworkForOkx(okxNetwork);
1090
1184
  setNetwork(foundNetwork);
1091
1185
  } else if (provider === LEATHER) {
1092
1186
  if (address2.slice(0, 1) === "t") {
1093
- return TESTNET;
1187
+ if (network === TESTNET) {
1188
+ return TESTNET;
1189
+ } else if (network === TESTNET4) {
1190
+ return TESTNET4;
1191
+ } else if (network === SIGNET) {
1192
+ return SIGNET;
1193
+ } else if (network === FRACTAL_TESTNET) {
1194
+ return FRACTAL_TESTNET;
1195
+ }
1094
1196
  }
1095
1197
  return MAINNET;
1096
1198
  } else if (provider === PHANTOM) {
@@ -1100,28 +1202,33 @@ var LaserEyesProvider = ({
1100
1202
  return MAINNET;
1101
1203
  } else if (provider === WIZZ) {
1102
1204
  const wizzNetwork = yield library == null ? void 0 : library.getNetwork();
1103
- const foundNetwork = getNetworkForWizz(wizzNetwork);
1104
- setNetwork(foundNetwork);
1205
+ return getNetworkForWizz(wizzNetwork);
1105
1206
  }
1106
- return (_a = config == null ? void 0 : config.network) != null ? _a : MAINNET;
1207
+ return (_a2 = config == null ? void 0 : config.network) != null ? _a2 : MAINNET;
1107
1208
  } catch (error) {
1108
1209
  throw error;
1109
1210
  }
1110
- });
1211
+ }), [address2, provider, library]);
1111
1212
  const switchNetwork = (network2) => __async(void 0, null, function* () {
1112
1213
  try {
1113
1214
  if (!library)
1114
1215
  return;
1115
1216
  if (provider === UNISAT) {
1116
- const wantedNetwork = getWizzNetwork(network2);
1117
- yield library == null ? void 0 : library.switchNetwork(wantedNetwork);
1217
+ const wantedNetwork = getUnisatNetwork(network2);
1218
+ yield library == null ? void 0 : library.switchChain(wantedNetwork);
1118
1219
  setNetwork(network2);
1119
1220
  } else if (provider === WIZZ) {
1221
+ if (network2 === FRACTAL_TESTNET || network2 === FRACTAL_MAINNET) {
1222
+ return yield library.switchNetwork(WIZZ_MAINNET);
1223
+ }
1120
1224
  const wantedNetwork = getNetworkForWizz(network2);
1121
1225
  yield library == null ? void 0 : library.switchNetwork(wantedNetwork);
1122
1226
  setNetwork(network2);
1123
1227
  } else {
1124
- throw new Error("The connected wallet doesn't support this method..");
1228
+ disconnect();
1229
+ throw new Error(
1230
+ "The connected wallet doesn't support programmatic network changes.."
1231
+ );
1125
1232
  }
1126
1233
  } catch (error) {
1127
1234
  throw error;
@@ -1151,20 +1258,23 @@ var LaserEyesProvider = ({
1151
1258
  if (!library)
1152
1259
  return;
1153
1260
  if (provider === UNISAT) {
1261
+ if (network === TESTNET) {
1262
+ return yield getBTCBalance(paymentAddress, network);
1263
+ }
1154
1264
  return yield library.getBalance();
1155
1265
  } else if (provider === XVERSE) {
1156
- return yield getBTCBalance(paymentAddress);
1266
+ return yield getBTCBalance(paymentAddress, network);
1157
1267
  } else if (provider === OYL) {
1158
1268
  const balanceResponse = yield library.getBalance();
1159
1269
  return balanceResponse.btc.total * 1e8;
1160
1270
  } else if (provider === MAGIC_EDEN) {
1161
- return yield getBTCBalance(paymentAddress);
1271
+ return yield getBTCBalance(paymentAddress, network);
1162
1272
  } else if (provider === OKX) {
1163
- return yield getBTCBalance(paymentAddress);
1273
+ return yield getBTCBalance(paymentAddress, network);
1164
1274
  } else if (provider === LEATHER) {
1165
- return yield getBTCBalance(paymentAddress);
1275
+ return yield getBTCBalance(paymentAddress, network);
1166
1276
  } else if (provider === PHANTOM) {
1167
- return yield getBTCBalance(paymentAddress);
1277
+ return yield getBTCBalance(paymentAddress, network);
1168
1278
  } else if (provider === WIZZ) {
1169
1279
  const balanceResponse = yield library.getBalance();
1170
1280
  return balanceResponse.total * 1e8;
@@ -1193,7 +1303,7 @@ var LaserEyesProvider = ({
1193
1303
  }
1194
1304
  });
1195
1305
  const sendBTC = (to, amount) => __async(void 0, null, function* () {
1196
- var _a;
1306
+ var _a2;
1197
1307
  try {
1198
1308
  if (amount <= 0)
1199
1309
  throw new Error("Amount must be greater than 0");
@@ -1279,7 +1389,7 @@ var LaserEyesProvider = ({
1279
1389
  }
1280
1390
  ]
1281
1391
  });
1282
- if ((_a = response == null ? void 0 : response.result) == null ? void 0 : _a.txid) {
1392
+ if ((_a2 = response == null ? void 0 : response.result) == null ? void 0 : _a2.txid) {
1283
1393
  return response.result.txid;
1284
1394
  } else {
1285
1395
  if (response.error.code === RpcErrorCode.USER_REJECTION) {
@@ -1301,7 +1411,7 @@ var LaserEyesProvider = ({
1301
1411
  }
1302
1412
  });
1303
1413
  const signMessage = (message, toSignAddress) => __async(void 0, null, function* () {
1304
- var _a;
1414
+ var _a2;
1305
1415
  try {
1306
1416
  if (!library)
1307
1417
  return;
@@ -1359,8 +1469,7 @@ var LaserEyesProvider = ({
1359
1469
  message,
1360
1470
  paymentType
1361
1471
  });
1362
- console.log("signed", signed);
1363
- return (_a = signed == null ? void 0 : signed.result) == null ? void 0 : _a.signature;
1472
+ return (_a2 = signed == null ? void 0 : signed.result) == null ? void 0 : _a2.signature;
1364
1473
  } else if (provider === PHANTOM) {
1365
1474
  const utf8Bytes = new TextEncoder().encode(message);
1366
1475
  const uintArray = new Uint8Array(utf8Bytes);
@@ -1492,7 +1601,6 @@ var LaserEyesProvider = ({
1492
1601
  };
1493
1602
  } else if (provider === OYL) {
1494
1603
  const signedPsbt = yield library == null ? void 0 : library.signPsbt(psbtHex, true, true);
1495
- console.log({ signedPsbt });
1496
1604
  const psbtSignedPsbt = bitcoin2.Psbt.fromHex(signedPsbt);
1497
1605
  if (broadcast) {
1498
1606
  const txId = yield pushPsbt(psbtSignedPsbt.toHex());
@@ -2516,6 +2624,7 @@ var WalletIcon = ({
2516
2624
  }
2517
2625
  };
2518
2626
  export {
2627
+ FRACTAL_MAINNET,
2519
2628
  FRACTAL_TESTNET,
2520
2629
  LEATHER,
2521
2630
  LEATHER_MAINNET,
@@ -2547,15 +2656,21 @@ export {
2547
2656
  REGTEST,
2548
2657
  SIGNET,
2549
2658
  TESTNET,
2659
+ TESTNET4,
2550
2660
  UNISAT,
2661
+ UNISAT_FRACTAL_MAINNET,
2551
2662
  UNISAT_FRACTAL_TESTNET,
2552
2663
  UNISAT_MAINNET,
2664
+ UNISAT_SIGNET,
2553
2665
  UNISAT_TESTNET,
2666
+ UNISAT_TESTNET4,
2554
2667
  UnisatLogo,
2555
2668
  WALLETS,
2556
2669
  WIZZ,
2557
2670
  WIZZ_MAINNET,
2671
+ WIZZ_SIGNET,
2558
2672
  WIZZ_TESTNET,
2673
+ WIZZ_TESTNET4,
2559
2674
  WalletIcon,
2560
2675
  WizzLogo,
2561
2676
  XVERSE,
@@ -2570,6 +2685,7 @@ export {
2570
2685
  estimateTxSize,
2571
2686
  findOrdinalsAddress,
2572
2687
  findPaymentAddress,
2688
+ getAddressUtxos,
2573
2689
  getBTCBalance,
2574
2690
  getBitcoinNetwork,
2575
2691
  getLeatherNetwork,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnisat/lasereyes",
3
- "version": "0.0.41",
3
+ "version": "0.0.43",
4
4
  "sideEffects": false,
5
5
  "private": false,
6
6
  "license": "MIT",