@omnisat/lasereyes 0.0.5 → 0.0.6
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/README.md +0 -1
- package/dist/index.js +230 -418
- package/dist/index.mjs +220 -418
- 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,188 +343,92 @@ 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
|
+
});
|
|
328
351
|
(0, import_react.useEffect)(() => {
|
|
329
352
|
if (config) {
|
|
330
353
|
setNetwork(config.network);
|
|
331
|
-
|
|
332
|
-
|
|
354
|
+
getNetwork().then((foundNetwork) => {
|
|
355
|
+
if (config.network !== foundNetwork) {
|
|
356
|
+
switchNetwork(network);
|
|
357
|
+
} else if (network !== foundNetwork) {
|
|
358
|
+
setNetwork(network);
|
|
359
|
+
}
|
|
360
|
+
});
|
|
333
361
|
}
|
|
334
|
-
}, [config]);
|
|
335
|
-
(0, import_react.useEffect)(() => {
|
|
336
|
-
const oylLib = window == null ? void 0 : window.oyl;
|
|
337
|
-
setHasOyl(!!oylLib);
|
|
338
|
-
}, []);
|
|
362
|
+
}, [config, library]);
|
|
339
363
|
(0, import_react.useEffect)(() => {
|
|
340
364
|
const unisatLib = window == null ? void 0 : window.unisat;
|
|
341
365
|
setHasUnisat(!!unisatLib);
|
|
342
366
|
}, []);
|
|
343
367
|
(0, import_react.useEffect)(() => {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
setHasXverse(!!xverseLib);
|
|
347
|
-
}, []);
|
|
368
|
+
setBalance(void 0);
|
|
369
|
+
}, [network]);
|
|
348
370
|
(0, import_react.useEffect)(() => {
|
|
349
|
-
|
|
350
|
-
|
|
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`);
|
|
371
|
+
if (provider !== UNISAT) {
|
|
372
|
+
return;
|
|
370
373
|
}
|
|
371
|
-
|
|
374
|
+
library.getAccounts().then((accounts2) => {
|
|
375
|
+
handleAccountsChanged(accounts2);
|
|
376
|
+
});
|
|
377
|
+
library.on("accountsChanged", handleAccountsChanged);
|
|
378
|
+
library.on("networkChanged", handleNetworkChanged);
|
|
379
|
+
return () => {
|
|
380
|
+
library.removeListener("accountsChanged", handleAccountsChanged);
|
|
381
|
+
library.removeListener("networkChanged", handleNetworkChanged);
|
|
382
|
+
};
|
|
383
|
+
}, [library]);
|
|
384
|
+
(0, import_react.useEffect)(() => {
|
|
385
|
+
const defaultWallet = localStorage == null ? void 0 : localStorage.getItem(
|
|
386
|
+
LOCAL_STORAGE_DEFAULT_WALLET
|
|
387
|
+
);
|
|
388
|
+
if (defaultWallet && !isConnecting) {
|
|
389
|
+
setProvider(defaultWallet);
|
|
390
|
+
connect(defaultWallet);
|
|
391
|
+
}
|
|
392
|
+
}, []);
|
|
372
393
|
const connectUnisat = () => __async(void 0, null, function* () {
|
|
373
394
|
try {
|
|
374
395
|
localStorage == null ? void 0 : localStorage.setItem(LOCAL_STORAGE_DEFAULT_WALLET, UNISAT);
|
|
375
396
|
const lib = window.unisat;
|
|
376
|
-
const
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
397
|
+
const unisatAccounts = yield lib.requestAccounts();
|
|
398
|
+
if (!unisatAccounts)
|
|
399
|
+
throw new Error("No accounts found");
|
|
400
|
+
const unisatPubKey = yield lib.getPublicKey();
|
|
401
|
+
if (!unisatPubKey)
|
|
402
|
+
throw new Error("No public key found");
|
|
403
|
+
setAccounts(unisatAccounts);
|
|
404
|
+
setAddress(unisatAccounts[0]);
|
|
405
|
+
setPaymentAddress(unisatAccounts[0]);
|
|
406
|
+
setPublicKey(unisatPubKey);
|
|
407
|
+
setPaymentPublicKey(unisatPubKey);
|
|
380
408
|
setLibrary(lib);
|
|
381
409
|
setProvider(UNISAT);
|
|
382
|
-
handleAccountsChanged(result);
|
|
383
410
|
setConnected(true);
|
|
384
|
-
yield
|
|
385
|
-
|
|
386
|
-
setNetwork(foundNetwork);
|
|
387
|
-
});
|
|
411
|
+
const balance2 = yield lib == null ? void 0 : lib.getBalance();
|
|
412
|
+
setBalance(balance2 == null ? void 0 : balance2.total);
|
|
388
413
|
} catch (error) {
|
|
389
414
|
throw new Error(`Can't lasereyes to ${UNISAT} wallet`);
|
|
390
415
|
}
|
|
391
416
|
});
|
|
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
417
|
const handleAccountsChanged = (_accounts) => {
|
|
418
|
+
if (!_accounts.length) {
|
|
419
|
+
disconnect();
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
461
422
|
if (self.accounts[0] === _accounts[0]) {
|
|
462
423
|
return;
|
|
463
424
|
}
|
|
464
425
|
self.accounts = _accounts;
|
|
465
426
|
if (_accounts.length > 0) {
|
|
466
|
-
|
|
467
|
-
setConnected(true);
|
|
468
|
-
setAddress(_accounts[0]);
|
|
469
|
-
setPaymentAddress(_accounts[0]);
|
|
470
|
-
getBasicInfo();
|
|
427
|
+
connect(UNISAT);
|
|
471
428
|
} else {
|
|
472
429
|
setConnected(false);
|
|
473
430
|
}
|
|
474
431
|
};
|
|
475
|
-
(0, import_react.useEffect)(() => {
|
|
476
|
-
if (provider !== UNISAT) {
|
|
477
|
-
return;
|
|
478
|
-
}
|
|
479
|
-
library.getAccounts().then((accounts2) => {
|
|
480
|
-
handleAccountsChanged(accounts2);
|
|
481
|
-
});
|
|
482
|
-
library.on("accountsChanged", handleAccountsChanged);
|
|
483
|
-
library.on("networkChanged", handleNetworkChanged);
|
|
484
|
-
return () => {
|
|
485
|
-
library.removeListener("accountsChanged", handleAccountsChanged);
|
|
486
|
-
library.removeListener("networkChanged", handleNetworkChanged);
|
|
487
|
-
};
|
|
488
|
-
}, [library]);
|
|
489
|
-
(0, import_react.useEffect)(() => {
|
|
490
|
-
const defaultWallet = localStorage == null ? void 0 : localStorage.getItem(
|
|
491
|
-
LOCAL_STORAGE_DEFAULT_WALLET
|
|
492
|
-
);
|
|
493
|
-
if (defaultWallet) {
|
|
494
|
-
setProvider(defaultWallet);
|
|
495
|
-
connect(defaultWallet);
|
|
496
|
-
}
|
|
497
|
-
}, []);
|
|
498
432
|
const getBasicInfo = () => __async(void 0, null, function* () {
|
|
499
433
|
if (provider !== UNISAT)
|
|
500
434
|
return;
|
|
@@ -504,39 +438,33 @@ var LaserEyesProvider = ({
|
|
|
504
438
|
setBalance(balance2);
|
|
505
439
|
const network2 = yield library == null ? void 0 : library.getNetwork();
|
|
506
440
|
if (network2) {
|
|
507
|
-
|
|
441
|
+
const foundNetwork = getNetworkForUnisat(String(network2));
|
|
442
|
+
setNetwork(foundNetwork);
|
|
508
443
|
}
|
|
509
444
|
});
|
|
510
445
|
const handleNetworkChanged = (network2) => {
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
446
|
+
try {
|
|
447
|
+
let foundNetwork = MAINNET;
|
|
448
|
+
if (provider === UNISAT) {
|
|
449
|
+
foundNetwork = getNetworkForUnisat(network2);
|
|
450
|
+
setNetwork(foundNetwork);
|
|
451
|
+
connect(provider);
|
|
452
|
+
} else {
|
|
453
|
+
throw new Error("Unsupported wallet");
|
|
454
|
+
}
|
|
455
|
+
} catch (error) {
|
|
456
|
+
throw error;
|
|
520
457
|
}
|
|
521
|
-
setNetwork(foundNetwork);
|
|
522
|
-
getBasicInfo();
|
|
523
458
|
};
|
|
524
459
|
const connect = (walletName) => __async(void 0, null, function* () {
|
|
525
|
-
console.log("connecting");
|
|
526
460
|
setIsConnecting(true);
|
|
527
461
|
try {
|
|
528
462
|
if (!walletName)
|
|
529
463
|
throw new Error("No wallet provided");
|
|
530
|
-
if (walletName ===
|
|
531
|
-
yield connectOyl();
|
|
532
|
-
} else if (walletName === UNISAT) {
|
|
464
|
+
if (walletName === UNISAT) {
|
|
533
465
|
yield connectUnisat();
|
|
534
|
-
} else if (walletName === XVERSE) {
|
|
535
|
-
yield connectXverse();
|
|
536
|
-
} else if (walletName === LEATHER) {
|
|
537
|
-
yield connectLeather();
|
|
538
466
|
} else {
|
|
539
|
-
throw new Error("
|
|
467
|
+
throw new Error("Unsupported wallet!");
|
|
540
468
|
}
|
|
541
469
|
setConnected(true);
|
|
542
470
|
} catch (error) {
|
|
@@ -549,43 +477,23 @@ var LaserEyesProvider = ({
|
|
|
549
477
|
});
|
|
550
478
|
const disconnect = () => {
|
|
551
479
|
setAddress("");
|
|
480
|
+
setPaymentAddress("");
|
|
481
|
+
setPublicKey("");
|
|
552
482
|
setAccounts([]);
|
|
553
|
-
setProvider(
|
|
483
|
+
setProvider(void 0);
|
|
554
484
|
setLibrary(null);
|
|
555
485
|
setConnected(false);
|
|
486
|
+
setBalance(void 0);
|
|
556
487
|
localStorage == null ? void 0 : localStorage.removeItem(LOCAL_STORAGE_DEFAULT_WALLET);
|
|
557
488
|
};
|
|
558
489
|
const requestAccounts = () => __async(void 0, null, function* () {
|
|
559
490
|
try {
|
|
560
491
|
if (!library)
|
|
561
492
|
return;
|
|
562
|
-
if (provider ===
|
|
563
|
-
return yield library.requestAccounts();
|
|
564
|
-
} else if (provider === UNISAT) {
|
|
493
|
+
if (provider === UNISAT) {
|
|
565
494
|
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];
|
|
495
|
+
} else {
|
|
496
|
+
throw new Error("Unsupported wallet");
|
|
589
497
|
}
|
|
590
498
|
} catch (error) {
|
|
591
499
|
throw error;
|
|
@@ -595,17 +503,13 @@ var LaserEyesProvider = ({
|
|
|
595
503
|
try {
|
|
596
504
|
if (!library)
|
|
597
505
|
return;
|
|
598
|
-
if (provider ===
|
|
599
|
-
throw new Error("Not implemented");
|
|
600
|
-
} else if (provider === UNISAT) {
|
|
506
|
+
if (provider === UNISAT) {
|
|
601
507
|
const unisatNetwork = yield library == null ? void 0 : library.getNetwork();
|
|
602
508
|
const foundNetwork = getNetworkForUnisat(unisatNetwork);
|
|
603
509
|
setNetwork(foundNetwork);
|
|
604
510
|
return foundNetwork;
|
|
605
|
-
} else
|
|
606
|
-
throw new Error("
|
|
607
|
-
} else if (provider === LEATHER) {
|
|
608
|
-
throw new Error("Not implemented");
|
|
511
|
+
} else {
|
|
512
|
+
throw new Error("Unsupported wallet");
|
|
609
513
|
}
|
|
610
514
|
} catch (error) {
|
|
611
515
|
throw error;
|
|
@@ -615,14 +519,12 @@ var LaserEyesProvider = ({
|
|
|
615
519
|
try {
|
|
616
520
|
if (!library)
|
|
617
521
|
return;
|
|
618
|
-
if (provider ===
|
|
619
|
-
throw new Error("Not implemented");
|
|
620
|
-
} else if (provider === UNISAT) {
|
|
522
|
+
if (provider === UNISAT) {
|
|
621
523
|
const wantedNetwork = getUnisatNetwork(network2);
|
|
622
524
|
yield library == null ? void 0 : library.switchNetwork(wantedNetwork);
|
|
623
525
|
setNetwork(network2);
|
|
624
|
-
} else
|
|
625
|
-
throw new Error("
|
|
526
|
+
} else {
|
|
527
|
+
throw new Error("Unsupported wallet");
|
|
626
528
|
}
|
|
627
529
|
} catch (error) {
|
|
628
530
|
throw error;
|
|
@@ -632,17 +534,13 @@ var LaserEyesProvider = ({
|
|
|
632
534
|
try {
|
|
633
535
|
if (!library)
|
|
634
536
|
return;
|
|
635
|
-
if (provider ===
|
|
636
|
-
|
|
637
|
-
} else if (provider === UNISAT) {
|
|
537
|
+
if (provider === UNISAT) {
|
|
538
|
+
const pub = yield library == null ? void 0 : library.getPublicKey();
|
|
638
539
|
return yield library == null ? void 0 : library.getPublicKey();
|
|
639
|
-
} else
|
|
640
|
-
throw new Error("
|
|
641
|
-
} else if (provider === LEATHER) {
|
|
642
|
-
throw new Error("Not implemented");
|
|
540
|
+
} else {
|
|
541
|
+
throw new Error("Unsupported wallet");
|
|
643
542
|
}
|
|
644
543
|
} catch (error) {
|
|
645
|
-
console.error("error", error);
|
|
646
544
|
throw error;
|
|
647
545
|
}
|
|
648
546
|
});
|
|
@@ -650,12 +548,10 @@ var LaserEyesProvider = ({
|
|
|
650
548
|
try {
|
|
651
549
|
if (!library)
|
|
652
550
|
return;
|
|
653
|
-
if (provider ===
|
|
551
|
+
if (provider === UNISAT) {
|
|
654
552
|
return yield library.getBalance();
|
|
655
|
-
} else
|
|
656
|
-
|
|
657
|
-
} else if (provider === XVERSE) {
|
|
658
|
-
throw new Error("Not implemented");
|
|
553
|
+
} else {
|
|
554
|
+
throw new Error("Unsupported wallet");
|
|
659
555
|
}
|
|
660
556
|
} catch (error) {
|
|
661
557
|
throw error;
|
|
@@ -665,14 +561,10 @@ var LaserEyesProvider = ({
|
|
|
665
561
|
try {
|
|
666
562
|
if (!library)
|
|
667
563
|
return;
|
|
668
|
-
if (provider ===
|
|
669
|
-
return yield library.getInscriptions(0, 10);
|
|
670
|
-
} else if (provider === UNISAT) {
|
|
564
|
+
if (provider === UNISAT) {
|
|
671
565
|
return yield library.getInscriptions(0, 10);
|
|
672
|
-
} else
|
|
673
|
-
throw new Error("
|
|
674
|
-
} else if (provider === LEATHER) {
|
|
675
|
-
throw new Error("Not implemented");
|
|
566
|
+
} else {
|
|
567
|
+
throw new Error("Unsupported wallet");
|
|
676
568
|
}
|
|
677
569
|
} catch (error) {
|
|
678
570
|
throw error;
|
|
@@ -680,173 +572,85 @@ var LaserEyesProvider = ({
|
|
|
680
572
|
});
|
|
681
573
|
const sendBTC = (to, amount) => __async(void 0, null, function* () {
|
|
682
574
|
try {
|
|
683
|
-
if (
|
|
684
|
-
new Error("
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
new Error("
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
575
|
+
if (amount <= 0)
|
|
576
|
+
throw new Error("Amount must be greater than 0");
|
|
577
|
+
if (!Number.isInteger(amount))
|
|
578
|
+
throw new Error("Amount must be an integer");
|
|
579
|
+
if (!library)
|
|
580
|
+
throw new Error("Library not found");
|
|
581
|
+
if (provider === UNISAT) {
|
|
582
|
+
const txId = yield library == null ? void 0 : library.sendBitcoin(to, amount);
|
|
583
|
+
if (!txId)
|
|
584
|
+
throw new Error("Transaction failed");
|
|
585
|
+
return txId;
|
|
586
|
+
} else {
|
|
587
|
+
throw new Error("Unsupported wallet");
|
|
694
588
|
}
|
|
695
589
|
} catch (error) {
|
|
696
|
-
|
|
590
|
+
throw error;
|
|
697
591
|
}
|
|
698
592
|
});
|
|
699
593
|
const signMessage = (message) => __async(void 0, null, function* () {
|
|
700
594
|
try {
|
|
701
595
|
if (!library)
|
|
702
596
|
return;
|
|
703
|
-
if (provider ===
|
|
704
|
-
throw new Error("Not implemented");
|
|
705
|
-
} else if (provider === UNISAT) {
|
|
597
|
+
if (provider === UNISAT) {
|
|
706
598
|
return yield library == null ? void 0 : library.signMessage(message);
|
|
707
|
-
} else
|
|
708
|
-
throw new Error("
|
|
599
|
+
} else {
|
|
600
|
+
throw new Error("Unsupported wallet");
|
|
709
601
|
}
|
|
710
602
|
} catch (error) {
|
|
711
|
-
console.error(error);
|
|
712
603
|
throw error;
|
|
713
604
|
}
|
|
714
605
|
});
|
|
715
606
|
const signPsbt = (psbt, finalize = false, broadcast = true) => __async(void 0, null, function* () {
|
|
716
607
|
try {
|
|
608
|
+
let psbtHex, psbtBase64;
|
|
717
609
|
if (!library)
|
|
718
610
|
return;
|
|
719
|
-
if (
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
} else if (
|
|
723
|
-
|
|
611
|
+
if (isHex(psbt)) {
|
|
612
|
+
psbtBase64 = bitcoin2.Psbt.fromHex(psbt).toBase64();
|
|
613
|
+
psbtHex = psbt;
|
|
614
|
+
} else if (isBase64(psbt)) {
|
|
615
|
+
psbtHex = bitcoin2.Psbt.fromBase64(psbt).toHex();
|
|
616
|
+
psbtBase64 = psbt;
|
|
617
|
+
} else {
|
|
618
|
+
throw new Error("Invalid PSBT format");
|
|
619
|
+
}
|
|
620
|
+
if (provider === UNISAT) {
|
|
621
|
+
const signedPsbt = yield library == null ? void 0 : library.signPsbt(psbtHex, {
|
|
724
622
|
autoFinalized: finalize
|
|
725
623
|
});
|
|
726
|
-
|
|
624
|
+
if (broadcast) {
|
|
625
|
+
const txId = yield pushPsbt(signedPsbt);
|
|
626
|
+
return {
|
|
627
|
+
signedPsbtHex: signedPsbt.toHex(),
|
|
628
|
+
signedPsbtBase64: signedPsbt.toBase64(),
|
|
629
|
+
txId
|
|
630
|
+
};
|
|
631
|
+
}
|
|
727
632
|
return {
|
|
728
633
|
signedPsbtHex: signedPsbt.toHex(),
|
|
729
634
|
signedPsbtBase64: signedPsbt.toBase64()
|
|
730
635
|
};
|
|
731
|
-
} else
|
|
732
|
-
|
|
733
|
-
network: getBitcoinNetwork(network)
|
|
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);
|
|
773
|
-
}
|
|
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
|
-
return {
|
|
808
|
-
signedPsbtHex,
|
|
809
|
-
signedPsbtBase64,
|
|
810
|
-
txId
|
|
811
|
-
};
|
|
636
|
+
} else {
|
|
637
|
+
throw new Error("Unsupported wallet");
|
|
812
638
|
}
|
|
813
|
-
} catch (
|
|
814
|
-
|
|
815
|
-
throw error2;
|
|
639
|
+
} catch (error) {
|
|
640
|
+
throw error;
|
|
816
641
|
}
|
|
817
642
|
});
|
|
818
|
-
const pushPsbt = (psbt
|
|
643
|
+
const pushPsbt = (psbt) => __async(void 0, null, function* () {
|
|
819
644
|
try {
|
|
820
645
|
if (!library)
|
|
821
646
|
return;
|
|
822
|
-
if (provider ===
|
|
823
|
-
return yield library == null ? void 0 : library.pushPsbt(psbt);
|
|
824
|
-
} else if (provider === UNISAT) {
|
|
647
|
+
if (provider === UNISAT) {
|
|
825
648
|
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);
|
|
649
|
+
} else {
|
|
650
|
+
throw new Error("Unsupported wallet");
|
|
847
651
|
}
|
|
848
652
|
} catch (error) {
|
|
849
|
-
|
|
653
|
+
throw error;
|
|
850
654
|
}
|
|
851
655
|
});
|
|
852
656
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -864,10 +668,7 @@ var LaserEyesProvider = ({
|
|
|
864
668
|
network,
|
|
865
669
|
connected,
|
|
866
670
|
isConnecting,
|
|
867
|
-
hasOyl,
|
|
868
671
|
hasUnisat,
|
|
869
|
-
hasXverse,
|
|
870
|
-
hasLeather,
|
|
871
672
|
// functions
|
|
872
673
|
connect,
|
|
873
674
|
disconnect,
|
|
@@ -876,6 +677,7 @@ var LaserEyesProvider = ({
|
|
|
876
677
|
switchNetwork,
|
|
877
678
|
getPublicKey,
|
|
878
679
|
getBalance,
|
|
680
|
+
getInscriptions,
|
|
879
681
|
sendBTC,
|
|
880
682
|
signPsbt,
|
|
881
683
|
pushPsbt,
|
|
@@ -892,6 +694,8 @@ var LaserEyesProvider = ({
|
|
|
892
694
|
LEATHER_TESTNET,
|
|
893
695
|
LaserEyesProvider,
|
|
894
696
|
MAINNET,
|
|
697
|
+
MEMPOOL_SPACE_TESTNET_URL,
|
|
698
|
+
MEMPOOL_SPACE_URL,
|
|
895
699
|
OYL,
|
|
896
700
|
P2PKH,
|
|
897
701
|
P2SH,
|
|
@@ -910,11 +714,19 @@ var LaserEyesProvider = ({
|
|
|
910
714
|
XVERSE_NETWORK,
|
|
911
715
|
XVERSE_TESTNET,
|
|
912
716
|
createConfig,
|
|
717
|
+
findOrdinalsAddress,
|
|
718
|
+
findPaymentAddress,
|
|
719
|
+
getBTCBalance,
|
|
720
|
+
getBitcoinNetwork,
|
|
913
721
|
getLeatherNetwork,
|
|
722
|
+
getMempoolSpaceUrl,
|
|
914
723
|
getNetworkForLeather,
|
|
915
724
|
getNetworkForUnisat,
|
|
916
725
|
getNetworkForXverse,
|
|
917
726
|
getUnisatNetwork,
|
|
918
727
|
getXverseNetwork,
|
|
728
|
+
isBase64,
|
|
729
|
+
isHex,
|
|
730
|
+
satoshisToBTC,
|
|
919
731
|
useLaserEyes
|
|
920
732
|
});
|