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