@omnisat/lasereyes 0.0.2

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 ADDED
@@ -0,0 +1,970 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
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
+
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";
53
+ var XVERSE_NETWORK = "Mainnet";
54
+ var UNISAT_MAINNET = "livenet";
55
+ var UNISAT_TESTNET = "testnet";
56
+ var XVERSE_MAINNET = "Mainnet";
57
+ var XVERSE_TESTNET = "Testnet";
58
+ var LEATHER_MAINNET = "mainnet";
59
+ var LEATHER_TESTNET = "testnet";
60
+ var MAINNET = "mainnet";
61
+ var TESTNET = "testnet";
62
+ var getXverseNetwork = (network) => {
63
+ if (network === MAINNET)
64
+ return XVERSE_MAINNET;
65
+ if (network === TESTNET)
66
+ return XVERSE_TESTNET;
67
+ return XVERSE_MAINNET;
68
+ };
69
+ var getLeatherNetwork = (network) => {
70
+ if (network === MAINNET)
71
+ return LEATHER_MAINNET;
72
+ if (network === TESTNET)
73
+ return LEATHER_TESTNET;
74
+ return LEATHER_MAINNET;
75
+ };
76
+ var getUnisatNetwork = (network) => {
77
+ if (network === MAINNET)
78
+ return UNISAT_MAINNET;
79
+ if (network === TESTNET)
80
+ return UNISAT_TESTNET;
81
+ return UNISAT_MAINNET;
82
+ };
83
+ var getNetworkForUnisat = (network) => {
84
+ if (network === UNISAT_MAINNET)
85
+ return MAINNET;
86
+ if (network === UNISAT_TESTNET)
87
+ return TESTNET;
88
+ return MAINNET;
89
+ };
90
+ var getNetworkForXverse = (network) => {
91
+ if (network === XVERSE_MAINNET)
92
+ return MAINNET;
93
+ if (network === XVERSE_TESTNET)
94
+ return TESTNET;
95
+ return MAINNET;
96
+ };
97
+ var getNetworkForLeather = (network) => {
98
+ if (network === LEATHER_MAINNET)
99
+ return MAINNET;
100
+ if (network === LEATHER_TESTNET)
101
+ return TESTNET;
102
+ return MAINNET;
103
+ };
104
+ var P2TR = "p2tr";
105
+ var P2PKH = "p2pkh";
106
+ var P2WPKH = "p2wpkh";
107
+ var P2WSH = "p2wsh";
108
+ var P2SH = "p2sh";
109
+ var WALLETS = {
110
+ oyl: {
111
+ name: OYL,
112
+ icon: "data:image/svg+xml,%3Csvg%20width%3D%2296%22%20height%3D%2216%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M17.27.318c2.947%200%205.72.26%208.32.78%202.6.507%204.714%201.307%206.34%202.4%201.64%201.094%202.46%202.467%202.46%204.12%200%201.654-.82%203.047-2.46%204.18-1.64%201.12-3.766%201.954-6.38%202.5-2.6.547-5.36.82-8.28.82-2.946%200-5.72-.253-8.32-.76-2.6-.52-4.72-1.326-6.36-2.42C.964%2010.845.15%209.472.15%207.818c0-1.653.82-3.04%202.46-4.16%201.64-1.133%203.76-1.973%206.36-2.52%202.614-.546%205.38-.82%208.3-.82Zm.04%2011.96c1.4%200%202.8-.146%204.2-.44%201.414-.293%202.6-.78%203.56-1.46.96-.68%201.44-1.566%201.44-2.66%200-1.093-.48-1.98-1.44-2.66-.96-.68-2.146-1.166-3.56-1.46-1.4-.293-2.8-.44-4.2-.44h-.08c-1.4%200-2.806.147-4.22.44-1.4.294-2.58.78-3.54%201.46-.96.68-1.44%201.567-1.44%202.66%200%201.094.48%201.98%201.44%202.66.96.68%202.14%201.167%203.54%201.46%201.414.294%202.82.44%204.22.44h.08ZM61.293.758c.08-.026.14-.04.18-.04h8.24c.12%200%20.214.04.28.12.08.08.12.174.12.28%200%20.147-.066.26-.2.34l-14%207.7c-.133.067-.2.18-.2.34v4.82c0%20.107-.04.2-.12.28a.384.384%200%200%201-.28.12h-6.94c-.106%200-.2-.04-.28-.12a.384.384%200%200%201-.12-.28v-4.82c0-.16-.066-.273-.2-.34l-13.98-7.7a.376.376%200%200%201-.2-.34c0-.106.034-.2.1-.28.067-.08.16-.12.28-.12h8.24c.054%200%20.12.014.2.04l9.24%205.1c.08.027.147.04.2.04.04%200%20.1-.013.18-.04l9.26-5.1Zm11.232.36c0-.106.033-.2.1-.28.08-.08.173-.12.28-.12h6.84c.106%200%20.193.04.26.12.08.08.12.174.12.28v10.32c0%20.107.04.2.12.28.08.08.173.12.28.12h14.46c.106%200%20.193.04.26.12.08.08.12.174.12.28v2.08c0%20.107-.04.2-.12.28a.322.322%200%200%201-.26.12h-22.08c-.107%200-.2-.04-.28-.12a.424.424%200%200%201-.1-.28v-13.2Z%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E",
113
+ site: "https://oyl.io/",
114
+ disabled: false
115
+ },
116
+ unisat: {
117
+ name: UNISAT,
118
+ icon: "/wallet-logos/unisat_logo.png",
119
+ site: "https://unisat.io/",
120
+ disabled: false
121
+ },
122
+ xverse: {
123
+ name: XVERSE,
124
+ icon: "/wallet-logos/xverse_logo.png",
125
+ site: "https://www.xverse.app/",
126
+ config: () => {
127
+ },
128
+ disabled: false
129
+ },
130
+ leather: {
131
+ name: LEATHER,
132
+ icon: "/wallet-logos/leather_logo.png",
133
+ site: "https://leather.io/",
134
+ config: () => {
135
+ },
136
+ disabled: true
137
+ }
138
+ };
139
+
140
+ // src/config/createConfig.ts
141
+ var createConfig = (config) => {
142
+ return __spreadValues({}, config);
143
+ };
144
+
145
+ // src/providers/LaserEyesProvider.tsx
146
+ import {
147
+ createContext,
148
+ useContext,
149
+ useEffect,
150
+ useRef,
151
+ useState
152
+ } from "react";
153
+ import * as bitcoin from "bitcoinjs-lib";
154
+ import { getAddress, signTransaction } from "sats-connect";
155
+
156
+ // src/consts/settings.ts
157
+ var LOCAL_STORAGE_DEFAULT_WALLET = "defaultWallet";
158
+ var NETWORK = TESTNET;
159
+
160
+ // src/providers/LaserEyesProvider.tsx
161
+ import { fromOutputScript } from "bitcoinjs-lib/src/address";
162
+ import { useLocalStorage } from "usehooks-ts";
163
+ import { jsx } from "react/jsx-runtime";
164
+ var initialWalletContext = {
165
+ hasOyl: false,
166
+ hasUnisat: false,
167
+ hasXverse: false,
168
+ hasLeather: false,
169
+ connected: false,
170
+ isConnecting: false,
171
+ publicKey: "",
172
+ // Empty string as the public key is unknown
173
+ address: "",
174
+ // Empty string as the address is unknown
175
+ paymentAddress: "",
176
+ // Empty string as the address is unknown
177
+ paymentPublicKey: "",
178
+ balance: {
179
+ confirmed: 0,
180
+ // Initial confirmed balance is zero
181
+ unconfirmed: 0,
182
+ // Initial unconfirmed balance is zero
183
+ total: 0
184
+ // Initial total balance is zero
185
+ },
186
+ network: "",
187
+ // Empty string as the network is unknown
188
+ library: null,
189
+ // Initial library is null, assuming it will be an object once initialized
190
+ provider: null,
191
+ // Initial provider is null, assuming it will be an object once initialized
192
+ accounts: [],
193
+ // Initially, there are no accounts
194
+ // Placeholder functions for wallet operations. These should be replaced with actual implementations.
195
+ connect: (walletName) => __async(void 0, null, function* () {
196
+ }),
197
+ disconnect: () => {
198
+ },
199
+ requestAccounts: () => __async(void 0, null, function* () {
200
+ return [];
201
+ }),
202
+ getNetwork: () => __async(void 0, null, function* () {
203
+ return "";
204
+ }),
205
+ switchNetwork: (network) => __async(void 0, null, function* () {
206
+ return "";
207
+ }),
208
+ getPublicKey: () => __async(void 0, null, function* () {
209
+ return "";
210
+ }),
211
+ getBalance: () => __async(void 0, null, function* () {
212
+ return "";
213
+ }),
214
+ getInscriptions: () => __async(void 0, null, function* () {
215
+ }),
216
+ getAllBRC20Tokens: () => __async(void 0, null, function* () {
217
+ }),
218
+ sendBTC: (to, amount) => __async(void 0, null, function* () {
219
+ return "";
220
+ }),
221
+ payInscribe: () => __async(void 0, null, function* () {
222
+ }),
223
+ deploy: () => __async(void 0, null, function* () {
224
+ }),
225
+ mint: () => __async(void 0, null, function* () {
226
+ }),
227
+ signMessage: (message) => __async(void 0, null, function* () {
228
+ return "";
229
+ }),
230
+ signPsbt: (tx) => __async(void 0, null, function* () {
231
+ return "";
232
+ }),
233
+ pushPsbt: (tx) => __async(void 0, null, function* () {
234
+ return "";
235
+ })
236
+ // signPsbts: async () => { /* Implementation */ },
237
+ };
238
+ var LaserEyesContext = createContext(initialWalletContext);
239
+ var useLaserEyes = () => {
240
+ return useContext(LaserEyesContext);
241
+ };
242
+ var LaserEyesProvider = ({ children }) => {
243
+ const [connected, setConnected] = useState(false);
244
+ const [isConnecting, setIsConnecting] = useState(false);
245
+ const [accounts, setAccounts] = useState([]);
246
+ const [publicKey, setPublicKey] = useState("");
247
+ const [paymentPublicKey, setPaymentPublicKey] = useState("");
248
+ const [address, setAddress] = useState("");
249
+ const [paymentAddress, setPaymentAddress] = useState("");
250
+ const [balance, setBalance] = useState({
251
+ confirmed: 0,
252
+ unconfirmed: 0,
253
+ total: 0
254
+ });
255
+ const [network, setNetwork] = useLocalStorage("network", NETWORK);
256
+ const [library, setLibrary] = useState(null);
257
+ const [provider, setProvider] = useState("");
258
+ const [hasOyl, setHasOyl] = useState(false);
259
+ const [hasUnisat, setHasUnisat] = useState(false);
260
+ const [hasXverse, setHasXverse] = useState(false);
261
+ const [hasLeather, setHasLeather] = useState(false);
262
+ useEffect(() => {
263
+ const oylLib = window == null ? void 0 : window.oyl;
264
+ setHasOyl(!!oylLib);
265
+ }, []);
266
+ useEffect(() => {
267
+ const unisatLib = window == null ? void 0 : window.unisat;
268
+ setHasUnisat(!!unisatLib);
269
+ }, []);
270
+ useEffect(() => {
271
+ var _a;
272
+ const xverseLib = (_a = window == null ? void 0 : window.XverseProviders) == null ? void 0 : _a.BitcoinProvider;
273
+ setHasXverse(!!xverseLib);
274
+ }, []);
275
+ useEffect(() => {
276
+ const leatherLib = window == null ? void 0 : window.LeatherProvider;
277
+ setHasLeather(!!leatherLib);
278
+ }, []);
279
+ const selfRef = useRef({
280
+ accounts: []
281
+ });
282
+ const self = selfRef.current;
283
+ const connectOyl = () => __async(void 0, null, function* () {
284
+ try {
285
+ localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, OYL);
286
+ const lib = window.oyl;
287
+ const result = yield lib.requestAccounts();
288
+ setAccounts(result);
289
+ setAddress(result[0]);
290
+ setPaymentAddress(result[0]);
291
+ setLibrary(lib);
292
+ setProvider(OYL);
293
+ handleAccountsChanged(result);
294
+ setConnected(true);
295
+ } catch (error) {
296
+ new Error("Can't lasereyes to wallet");
297
+ }
298
+ });
299
+ const connectUnisat = () => __async(void 0, null, function* () {
300
+ try {
301
+ localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, UNISAT);
302
+ const lib = window.unisat;
303
+ const result = yield lib.requestAccounts();
304
+ setAccounts(result);
305
+ setAddress(result[0]);
306
+ setPaymentAddress(result[0]);
307
+ setLibrary(lib);
308
+ setProvider(UNISAT);
309
+ handleAccountsChanged(result);
310
+ setConnected(true);
311
+ yield getNetwork().then((network2) => {
312
+ const foundNetwork = getNetworkForUnisat(String(network2));
313
+ setNetwork(foundNetwork);
314
+ });
315
+ } catch (error) {
316
+ new Error("Can't lasereyes to wallet");
317
+ }
318
+ });
319
+ const connectXverse = () => __async(void 0, null, function* () {
320
+ try {
321
+ localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, XVERSE);
322
+ let xverseNetwork = getXverseNetwork(NETWORK);
323
+ const getAddressOptions = {
324
+ payload: {
325
+ purposes: ["ordinals", "payment"],
326
+ message: "Address for receiving Ordinals and payments",
327
+ network: {
328
+ type: xverseNetwork
329
+ }
330
+ },
331
+ onFinish: (response) => {
332
+ setPublicKey(String(response.addresses[0].publicKey));
333
+ setPaymentPublicKey(String(response.addresses[1].publicKey));
334
+ const foundAddress = findOrdinalsAddress(response.addresses);
335
+ const foundPaymentAddress = findPaymentAddress(response.addresses);
336
+ if (foundAddress && foundPaymentAddress) {
337
+ setAddress(foundAddress.address);
338
+ setPaymentAddress(foundPaymentAddress.address);
339
+ setProvider(XVERSE);
340
+ setLibrary(window.BitcoinProvider);
341
+ }
342
+ }
343
+ };
344
+ yield getAddress(getAddressOptions);
345
+ setConnected(true);
346
+ } catch (error) {
347
+ new Error(`Can't lasereyes to ${XVERSE} wallet`);
348
+ }
349
+ });
350
+ const connectLeather = () => __async(void 0, null, function* () {
351
+ try {
352
+ localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, LEATHER);
353
+ const lib = window.LeatherProvider;
354
+ const getAddressesResponse = yield lib.request(
355
+ "getAddresses"
356
+ );
357
+ const addressesResponse = getAddressesResponse.result;
358
+ const addresses = addressesResponse.addresses;
359
+ const leatherAccountsParsed = addresses.map(
360
+ (address2) => address2.address
361
+ );
362
+ const taprootAddress = addresses.find(
363
+ (address2) => address2.type === P2TR
364
+ );
365
+ const segwitAddress = addresses.find(
366
+ (address2) => address2.type === P2WPKH
367
+ );
368
+ setAccounts(leatherAccountsParsed);
369
+ setAddress(String(taprootAddress == null ? void 0 : taprootAddress.address));
370
+ setPaymentAddress(String(segwitAddress == null ? void 0 : segwitAddress.address));
371
+ setLibrary(lib);
372
+ setProvider(LEATHER);
373
+ handleAccountsChanged(leatherAccountsParsed);
374
+ setConnected(true);
375
+ yield getNetwork().then((network2) => {
376
+ if (!network2) {
377
+ setNetwork(MAINNET);
378
+ } else {
379
+ setNetwork(network2);
380
+ }
381
+ });
382
+ setConnected(true);
383
+ } catch (error) {
384
+ new Error(`Can't lasereyes to ${LEATHER} wallet`);
385
+ }
386
+ });
387
+ const handleAccountsChanged = (_accounts) => {
388
+ if (self.accounts[0] === _accounts[0]) {
389
+ return;
390
+ }
391
+ self.accounts = _accounts;
392
+ if (_accounts.length > 0) {
393
+ setAccounts(_accounts);
394
+ setConnected(true);
395
+ setAddress(_accounts[0]);
396
+ setPaymentAddress(_accounts[0]);
397
+ getBasicInfo();
398
+ } else {
399
+ setConnected(false);
400
+ }
401
+ };
402
+ useEffect(() => {
403
+ if (provider !== UNISAT) {
404
+ return;
405
+ }
406
+ library.getAccounts().then((accounts2) => {
407
+ handleAccountsChanged(accounts2);
408
+ });
409
+ library.on("accountsChanged", handleAccountsChanged);
410
+ library.on("networkChanged", handleNetworkChanged);
411
+ return () => {
412
+ library.removeListener("accountsChanged", handleAccountsChanged);
413
+ library.removeListener("networkChanged", handleNetworkChanged);
414
+ };
415
+ }, [library]);
416
+ useEffect(() => {
417
+ const defaultWallet = localStorage == null ? void 0 : localStorage.getItem(
418
+ LOCAL_STORAGE_DEFAULT_WALLET
419
+ );
420
+ if (defaultWallet) {
421
+ setProvider(defaultWallet);
422
+ connect(defaultWallet);
423
+ }
424
+ }, []);
425
+ const getBasicInfo = () => __async(void 0, null, function* () {
426
+ if (provider !== UNISAT)
427
+ return;
428
+ const publicKey2 = yield library == null ? void 0 : library.getPublicKey();
429
+ setPublicKey(String(publicKey2));
430
+ const balance2 = yield library == null ? void 0 : library.getBalance();
431
+ setBalance(balance2);
432
+ const network2 = yield library == null ? void 0 : library.getNetwork();
433
+ if (network2) {
434
+ setNetwork(network2);
435
+ }
436
+ });
437
+ const handleNetworkChanged = (network2) => {
438
+ let foundNetwork = "";
439
+ if (provider === UNISAT) {
440
+ foundNetwork = getNetworkForUnisat(network2);
441
+ }
442
+ if (provider === XVERSE) {
443
+ foundNetwork = getXverseNetwork(network2);
444
+ }
445
+ if (provider === LEATHER) {
446
+ foundNetwork = getLeatherNetwork(network2);
447
+ }
448
+ setNetwork(foundNetwork);
449
+ getBasicInfo();
450
+ };
451
+ const findOrdinalsAddress = (addresses) => {
452
+ return addresses.find(
453
+ ({ purpose }) => purpose === "ordinals"
454
+ );
455
+ };
456
+ const findPaymentAddress = (addresses) => {
457
+ return addresses.find(
458
+ ({ purpose }) => purpose === "payment"
459
+ );
460
+ };
461
+ const connect = (walletName) => __async(void 0, null, function* () {
462
+ setIsConnecting(true);
463
+ try {
464
+ if (!walletName)
465
+ new Error("No wallet provided");
466
+ if (walletName === OYL) {
467
+ yield connectOyl();
468
+ } else if (walletName === UNISAT) {
469
+ yield connectUnisat();
470
+ } else if (walletName === XVERSE) {
471
+ yield connectXverse();
472
+ } else if (walletName === LEATHER) {
473
+ yield connectLeather();
474
+ } else {
475
+ new Error("Wallet not found!");
476
+ }
477
+ setConnected(true);
478
+ } catch (error) {
479
+ console.error("error", error);
480
+ disconnect();
481
+ new Error("Can't lasereyes to wallet");
482
+ } finally {
483
+ setIsConnecting(false);
484
+ }
485
+ });
486
+ const disconnect = () => {
487
+ setAddress("");
488
+ setAccounts([]);
489
+ setProvider("");
490
+ setLibrary(null);
491
+ setConnected(false);
492
+ localStorage == null ? void 0 : localStorage.removeItem(LOCAL_STORAGE_DEFAULT_WALLET);
493
+ };
494
+ const requestAccounts = () => __async(void 0, null, function* () {
495
+ if (!library)
496
+ return;
497
+ if (provider === OYL) {
498
+ return yield library.requestAccounts();
499
+ } else if (provider === UNISAT) {
500
+ return yield library.requestAccounts();
501
+ } else if (provider === XVERSE) {
502
+ const getAddressOptions = {
503
+ payload: {
504
+ // @ts-ignore
505
+ purposes: ["ordinals", "payment"],
506
+ message: "Address for receiving Ordinals and payments",
507
+ network: {
508
+ type: XVERSE_NETWORK
509
+ }
510
+ },
511
+ onFinish: (response) => __async(void 0, null, function* () {
512
+ const foundAddress = findOrdinalsAddress(response.addresses);
513
+ setAddress(foundAddress.address);
514
+ const foundPaymentAddress = findPaymentAddress(response.addresses);
515
+ setPaymentAddress(foundPaymentAddress);
516
+ setPublicKey(String(response.addresses[0].publicKey));
517
+ setPaymentPublicKey(String(response.addresses[1].publicKey));
518
+ }),
519
+ onCancel: () => {
520
+ console.log("CANCELLED");
521
+ }
522
+ };
523
+ return [address];
524
+ } else if (provider === LEATHER) {
525
+ localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, LEATHER);
526
+ const lib = window.LeatherProvider;
527
+ const getAddressesResponse = yield lib.request(
528
+ "getAddresses"
529
+ );
530
+ const addressesResponse = getAddressesResponse.result;
531
+ const addresses = addressesResponse.addresses;
532
+ const leatherAccountsParsed = addresses.map(
533
+ (address2) => address2.address
534
+ );
535
+ const taprootAddress = addresses.find(
536
+ (address2) => address2.type === P2TR
537
+ );
538
+ const segwitAddress = addresses.find(
539
+ (address2) => address2.type === P2WPKH
540
+ );
541
+ setAccounts(leatherAccountsParsed);
542
+ setAddress(String(taprootAddress == null ? void 0 : taprootAddress.address));
543
+ setPaymentAddress(String(segwitAddress == null ? void 0 : segwitAddress.address));
544
+ setLibrary(lib);
545
+ setProvider(LEATHER);
546
+ handleAccountsChanged(leatherAccountsParsed);
547
+ setConnected(true);
548
+ yield getNetwork().then((network2) => {
549
+ if (!network2) {
550
+ setNetwork(MAINNET);
551
+ } else {
552
+ setNetwork(network2);
553
+ }
554
+ });
555
+ setConnected(true);
556
+ } else {
557
+ console.log("NO WALLET CONNECTED");
558
+ }
559
+ });
560
+ const getNetwork = () => __async(void 0, null, function* () {
561
+ try {
562
+ if (!library)
563
+ return;
564
+ if (provider === OYL) {
565
+ new Error("Not implemented");
566
+ } else if (provider === UNISAT) {
567
+ const unisatNetwork = yield library == null ? void 0 : library.getNetwork();
568
+ const foundNetwork = getNetworkForUnisat(unisatNetwork);
569
+ setNetwork(foundNetwork);
570
+ return foundNetwork;
571
+ } else if (provider === XVERSE) {
572
+ if (address.slice(0, 1) === "t") {
573
+ return TESTNET;
574
+ }
575
+ return MAINNET;
576
+ } else if (provider === LEATHER) {
577
+ if (address.slice(0, 1) === "t") {
578
+ return TESTNET;
579
+ }
580
+ return MAINNET;
581
+ }
582
+ } catch (error) {
583
+ console.error("error", error);
584
+ }
585
+ });
586
+ const switchNetwork = (network2) => __async(void 0, null, function* () {
587
+ try {
588
+ if (!library)
589
+ return;
590
+ if (provider === OYL) {
591
+ new Error("Not implemented");
592
+ } else if (provider === UNISAT) {
593
+ const wantedNetwork = getUnisatNetwork(network2);
594
+ yield library == null ? void 0 : library.switchNetwork(wantedNetwork);
595
+ setNetwork(network2);
596
+ } else if (provider === XVERSE) {
597
+ return NETWORK;
598
+ } else if (provider === LEATHER) {
599
+ return NETWORK;
600
+ }
601
+ } catch (error) {
602
+ console.error("error", error);
603
+ }
604
+ });
605
+ const getPublicKey = () => __async(void 0, null, function* () {
606
+ try {
607
+ if (!library)
608
+ return;
609
+ if (provider === OYL) {
610
+ return yield library == null ? void 0 : library.getPublicKey();
611
+ } else if (provider === UNISAT) {
612
+ return yield library == null ? void 0 : library.getPublicKey();
613
+ } else if (provider === XVERSE) {
614
+ new Error("Not implemented");
615
+ } else if (provider === LEATHER) {
616
+ new Error("Not implemented");
617
+ }
618
+ } catch (error) {
619
+ console.error("error", error);
620
+ }
621
+ });
622
+ const getBalance = () => __async(void 0, null, function* () {
623
+ try {
624
+ if (!library)
625
+ return;
626
+ if (provider === OYL) {
627
+ return yield library.getBalance();
628
+ } else if (provider === UNISAT) {
629
+ return yield library.getBalance();
630
+ } else if (provider === XVERSE) {
631
+ new Error("Not implemented");
632
+ } else if (provider === LEATHER) {
633
+ new Error("Not implemented");
634
+ }
635
+ } catch (error) {
636
+ console.error("error", error);
637
+ }
638
+ });
639
+ const getInscriptions = () => __async(void 0, null, function* () {
640
+ try {
641
+ if (!library)
642
+ return;
643
+ if (provider === OYL) {
644
+ return yield library.getInscriptions(0, 10);
645
+ } else if (provider === UNISAT) {
646
+ return yield library.getInscriptions(0, 10);
647
+ } else if (provider === XVERSE) {
648
+ new Error("Not implemented");
649
+ } else if (provider === LEATHER) {
650
+ new Error("Not implemented");
651
+ }
652
+ } catch (error) {
653
+ console.error("error", error);
654
+ }
655
+ });
656
+ const getAllBRC20Tokens = () => __async(void 0, null, function* () {
657
+ try {
658
+ if (!library)
659
+ return;
660
+ if (provider === OYL) {
661
+ new Error("Not implemented");
662
+ } else if (provider === UNISAT) {
663
+ new Error("Not implemented");
664
+ } else if (provider === XVERSE) {
665
+ new Error("Not implemented");
666
+ } else if (provider === LEATHER) {
667
+ new Error("Not implemented");
668
+ }
669
+ } catch (error) {
670
+ console.error("error", error);
671
+ }
672
+ });
673
+ const sendBTC = (to, amount) => __async(void 0, null, function* () {
674
+ try {
675
+ if (provider === OYL) {
676
+ new Error("Not implemented");
677
+ } else if (provider === UNISAT) {
678
+ return yield library == null ? void 0 : library.sendBitcoin(to, amount);
679
+ } else if (provider === XVERSE) {
680
+ new Error("Not implemented");
681
+ } else if (provider === LEATHER) {
682
+ return yield library == null ? void 0 : library.request("sendTransfer", {
683
+ address: to,
684
+ amount: amount.toString()
685
+ });
686
+ }
687
+ } catch (error) {
688
+ console.error("error", error);
689
+ }
690
+ });
691
+ const payInscribe = () => __async(void 0, null, function* () {
692
+ try {
693
+ if (!library)
694
+ return;
695
+ if (provider === OYL) {
696
+ new Error("Not implemented");
697
+ } else if (provider === UNISAT) {
698
+ new Error("Not implemented");
699
+ } else if (provider === XVERSE) {
700
+ new Error("Not implemented");
701
+ } else if (provider === LEATHER) {
702
+ new Error("Not implemented");
703
+ }
704
+ } catch (error) {
705
+ console.error("error", error);
706
+ }
707
+ });
708
+ const deploy = () => __async(void 0, null, function* () {
709
+ try {
710
+ if (!library)
711
+ return;
712
+ if (provider === OYL) {
713
+ new Error("Not implemented");
714
+ } else if (provider === UNISAT) {
715
+ new Error("Not implemented");
716
+ } else if (provider === XVERSE) {
717
+ new Error("Not implemented");
718
+ } else if (provider === LEATHER) {
719
+ new Error("Not implemented");
720
+ }
721
+ } catch (error) {
722
+ console.error("error", error);
723
+ }
724
+ });
725
+ const mint = () => __async(void 0, null, function* () {
726
+ try {
727
+ if (!library)
728
+ return;
729
+ if (provider === OYL) {
730
+ new Error("Not implemented");
731
+ } else if (provider === UNISAT) {
732
+ new Error("Not implemented");
733
+ } else if (provider === XVERSE) {
734
+ new Error("Not implemented");
735
+ } else if (provider === LEATHER) {
736
+ new Error("Not implemented");
737
+ }
738
+ } catch (error) {
739
+ console.error("error", error);
740
+ }
741
+ });
742
+ const signMessage = (message) => __async(void 0, null, function* () {
743
+ try {
744
+ if (!library)
745
+ return;
746
+ if (provider === OYL) {
747
+ new Error("Not implemented");
748
+ } else if (provider === UNISAT) {
749
+ return yield library == null ? void 0 : library.signMessage(message);
750
+ } else if (provider === XVERSE) {
751
+ new Error("Not implemented");
752
+ } else if (provider === LEATHER) {
753
+ return yield library == null ? void 0 : library.request("signMessage", {
754
+ message,
755
+ paymentType: P2TR
756
+ });
757
+ }
758
+ } catch (error) {
759
+ console.error("error", error);
760
+ }
761
+ });
762
+ const signPsbt = (psbt, finalize = false, broadcast = true) => __async(void 0, null, function* () {
763
+ try {
764
+ if (!library)
765
+ return;
766
+ if (provider === OYL) {
767
+ const response = yield library == null ? void 0 : library.signPsbt(psbt);
768
+ return response;
769
+ } else if (provider === UNISAT) {
770
+ return yield library == null ? void 0 : library.signPsbt(psbt, {
771
+ autoFinalized: finalize
772
+ });
773
+ } else if (provider === XVERSE) {
774
+ const toSignPsbt = bitcoin.Psbt.fromBase64(String(psbt), {
775
+ network: bitcoin.networks.testnet
776
+ });
777
+ const inputs = toSignPsbt.data.inputs;
778
+ const inputsToSign = [];
779
+ const ordinalAddressData = {
780
+ address,
781
+ signingIndexes: []
782
+ };
783
+ const paymentsAddressData = {
784
+ address: paymentAddress,
785
+ signingIndexes: []
786
+ };
787
+ let counter = 0;
788
+ try {
789
+ for (var iter = __forAwait(inputs), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
790
+ let input = temp.value;
791
+ const { script } = input.witnessUtxo;
792
+ const addressFromScript = fromOutputScript(
793
+ script,
794
+ bitcoin.networks.testnet
795
+ );
796
+ if (addressFromScript === paymentAddress) {
797
+ paymentsAddressData.signingIndexes.push(Number(counter));
798
+ } else if (addressFromScript === address) {
799
+ ordinalAddressData.signingIndexes.push(Number(counter));
800
+ }
801
+ counter++;
802
+ }
803
+ } catch (temp) {
804
+ error = [temp];
805
+ } finally {
806
+ try {
807
+ more && (temp = iter.return) && (yield temp.call(iter));
808
+ } finally {
809
+ if (error)
810
+ throw error[0];
811
+ }
812
+ }
813
+ if (ordinalAddressData.signingIndexes.length > 0) {
814
+ inputsToSign.push(ordinalAddressData);
815
+ }
816
+ if (paymentsAddressData.signingIndexes.length > 0) {
817
+ inputsToSign.push(paymentsAddressData);
818
+ }
819
+ let txId = "";
820
+ const xverseNetwork = getXverseNetwork(network);
821
+ const signPsbtOptions = {
822
+ payload: {
823
+ network: {
824
+ type: xverseNetwork
825
+ },
826
+ message: "Sign Transaction",
827
+ psbtBase64: toSignPsbt.toBase64(),
828
+ broadcast,
829
+ inputsToSign
830
+ },
831
+ onFinish: (response) => {
832
+ if (response.txId) {
833
+ txId = response.txId;
834
+ } else if (response.psbtBase64) {
835
+ const signedPsbt = bitcoin.Psbt.fromBase64(
836
+ String(response.psbtBase64),
837
+ {
838
+ network: bitcoin.networks.testnet
839
+ }
840
+ );
841
+ txId = signedPsbt.toHex();
842
+ }
843
+ },
844
+ onCancel: () => console.log("Canceled")
845
+ };
846
+ yield signTransaction(signPsbtOptions);
847
+ return txId;
848
+ } else if (provider === LEATHER) {
849
+ const requestParams = { hex: psbt, broadcast };
850
+ const response = yield library == null ? void 0 : library.request(
851
+ "signPsbt",
852
+ requestParams
853
+ );
854
+ const leatherHexResult = response.result;
855
+ const signedTx = leatherHexResult.hex;
856
+ if (!broadcast) {
857
+ return signedTx;
858
+ }
859
+ const toSignPsbt = bitcoin.Psbt.fromHex(String(signedTx), {
860
+ network: bitcoin.networks.testnet
861
+ });
862
+ toSignPsbt.finalizeAllInputs();
863
+ const txId = toSignPsbt.extractTransaction().getId();
864
+ return txId;
865
+ }
866
+ } catch (error2) {
867
+ console.error("error", error2);
868
+ }
869
+ });
870
+ const pushPsbt = (psbt, finalize = false) => __async(void 0, null, function* () {
871
+ try {
872
+ if (!library)
873
+ return;
874
+ if (provider === OYL) {
875
+ return yield library == null ? void 0 : library.pushPsbt(psbt);
876
+ } else if (provider === UNISAT) {
877
+ return yield library == null ? void 0 : library.pushPsbt(psbt);
878
+ } else if (provider === XVERSE) {
879
+ const signPsbtOptions = {
880
+ payload: {
881
+ network: {
882
+ type: NETWORK
883
+ },
884
+ message: "Sign Transaction",
885
+ psbtBase64: `cHNidP8BAJwCAmO+JvQJxhVDDpm3tV5PmPfzvJOSL4GOdjEOpAAAAAAnrAAA==`,
886
+ broadcast: false,
887
+ inputsToSign: [
888
+ {
889
+ address: "33TKH4kkiFPyTLDNmdNsLggyLeAYre57Qm",
890
+ signingIndexes: [1]
891
+ }
892
+ ]
893
+ },
894
+ onFinish: (response) => {
895
+ },
896
+ onCancel: () => console.log("Canceled")
897
+ };
898
+ yield signTransaction(signPsbtOptions);
899
+ }
900
+ } catch (error) {
901
+ console.error("error", error);
902
+ }
903
+ });
904
+ const contextValue = {
905
+ library,
906
+ accounts,
907
+ publicKey,
908
+ address,
909
+ paymentAddress,
910
+ paymentPublicKey,
911
+ provider,
912
+ balance,
913
+ network,
914
+ connected,
915
+ isConnecting,
916
+ hasOyl,
917
+ hasUnisat,
918
+ hasXverse,
919
+ hasLeather,
920
+ //
921
+ connect,
922
+ disconnect,
923
+ requestAccounts,
924
+ getNetwork,
925
+ switchNetwork,
926
+ getPublicKey,
927
+ getBalance,
928
+ getInscriptions,
929
+ getAllBRC20Tokens,
930
+ sendBTC,
931
+ signPsbt,
932
+ pushPsbt,
933
+ payInscribe,
934
+ deploy,
935
+ mint,
936
+ signMessage
937
+ };
938
+ return /* @__PURE__ */ jsx(LaserEyesContext.Provider, { value: contextValue, children });
939
+ };
940
+ export {
941
+ LEATHER,
942
+ LEATHER_MAINNET,
943
+ LEATHER_TESTNET,
944
+ LaserEyesProvider,
945
+ MAINNET,
946
+ OYL,
947
+ P2PKH,
948
+ P2SH,
949
+ P2TR,
950
+ P2WPKH,
951
+ P2WSH,
952
+ PHANTOM,
953
+ TESTNET,
954
+ UNISAT,
955
+ UNISAT_MAINNET,
956
+ UNISAT_TESTNET,
957
+ WALLETS,
958
+ XVERSE,
959
+ XVERSE_MAINNET,
960
+ XVERSE_NETWORK,
961
+ XVERSE_TESTNET,
962
+ createConfig,
963
+ getLeatherNetwork,
964
+ getNetworkForLeather,
965
+ getNetworkForUnisat,
966
+ getNetworkForXverse,
967
+ getUnisatNetwork,
968
+ getXverseNetwork,
969
+ useLaserEyes
970
+ };