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