@sats-connect/core 0.4.0-791813d → 0.4.0-80a221a

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,2786 @@
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 __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ AddressPurpose: () => AddressPurpose,
34
+ AddressType: () => AddressType,
35
+ BaseAdapter: () => BaseAdapter,
36
+ BitcoinNetworkType: () => BitcoinNetworkType,
37
+ DefaultAdaptersInfo: () => DefaultAdaptersInfo,
38
+ MessageSigningProtocols: () => MessageSigningProtocols,
39
+ RpcErrorCode: () => RpcErrorCode,
40
+ RpcIdSchema: () => RpcIdSchema,
41
+ SatsConnectAdapter: () => SatsConnectAdapter,
42
+ accountChangeEventName: () => accountChangeEventName,
43
+ accountChangeSchema: () => accountChangeSchema,
44
+ addListener: () => addListener,
45
+ addressSchema: () => addressSchema,
46
+ connectMethodName: () => connectMethodName,
47
+ connectParamsSchema: () => connectParamsSchema,
48
+ connectRequestMessageSchema: () => connectRequestMessageSchema,
49
+ connectResultSchema: () => connectResultSchema,
50
+ createInscription: () => createInscription,
51
+ createRepeatInscriptions: () => createRepeatInscriptions,
52
+ defaultAdapters: () => defaultAdapters,
53
+ disconnectEventName: () => disconnectEventName,
54
+ disconnectMethodName: () => disconnectMethodName,
55
+ disconnectParamsSchema: () => disconnectParamsSchema,
56
+ disconnectRequestMessageSchema: () => disconnectRequestMessageSchema,
57
+ disconnectResultSchema: () => disconnectResultSchema,
58
+ disconnectSchema: () => disconnectSchema,
59
+ getAccountMethodName: () => getAccountMethodName,
60
+ getAccountParamsSchema: () => getAccountParamsSchema,
61
+ getAccountRequestMessageSchema: () => getAccountRequestMessageSchema,
62
+ getAccountResultSchema: () => getAccountResultSchema,
63
+ getAccountsMethodName: () => getAccountsMethodName,
64
+ getAccountsParamsSchema: () => getAccountsParamsSchema,
65
+ getAccountsRequestMessageSchema: () => getAccountsRequestMessageSchema,
66
+ getAccountsResultSchema: () => getAccountsResultSchema,
67
+ getAddress: () => getAddress,
68
+ getAddressesMethodName: () => getAddressesMethodName,
69
+ getAddressesParamsSchema: () => getAddressesParamsSchema,
70
+ getAddressesRequestMessageSchema: () => getAddressesRequestMessageSchema,
71
+ getAddressesResultSchema: () => getAddressesResultSchema,
72
+ getBalanceMethodName: () => getBalanceMethodName,
73
+ getBalanceParamsSchema: () => getBalanceParamsSchema,
74
+ getBalanceRequestMessageSchema: () => getBalanceRequestMessageSchema,
75
+ getBalanceResultSchema: () => getBalanceResultSchema,
76
+ getCapabilities: () => getCapabilities,
77
+ getCurrentPermissionsMethodName: () => getCurrentPermissionsMethodName,
78
+ getCurrentPermissionsParamsSchema: () => getCurrentPermissionsParamsSchema,
79
+ getCurrentPermissionsRequestMessageSchema: () => getCurrentPermissionsRequestMessageSchema,
80
+ getCurrentPermissionsResultSchema: () => getCurrentPermissionsResultSchema,
81
+ getDefaultProvider: () => getDefaultProvider,
82
+ getInfoMethodName: () => getInfoMethodName,
83
+ getInfoParamsSchema: () => getInfoParamsSchema,
84
+ getInfoRequestMessageSchema: () => getInfoRequestMessageSchema,
85
+ getInfoResultSchema: () => getInfoResultSchema,
86
+ getInscriptionsMethodName: () => getInscriptionsMethodName,
87
+ getInscriptionsParamsSchema: () => getInscriptionsParamsSchema,
88
+ getInscriptionsRequestMessageSchema: () => getInscriptionsRequestMessageSchema,
89
+ getInscriptionsResultSchema: () => getInscriptionsResultSchema,
90
+ getProviderById: () => getProviderById,
91
+ getProviderOrThrow: () => getProviderOrThrow,
92
+ getProviders: () => getProviders,
93
+ getSupportedWallets: () => getSupportedWallets,
94
+ getWalletTypeMethodName: () => getWalletTypeMethodName,
95
+ getWalletTypeParamsSchema: () => getWalletTypeParamsSchema,
96
+ getWalletTypeRequestMessageSchema: () => getWalletTypeRequestMessageSchema,
97
+ getWalletTypeResultSchema: () => getWalletTypeResultSchema,
98
+ isProviderInstalled: () => isProviderInstalled,
99
+ networkChangeEventName: () => networkChangeEventName,
100
+ networkChangeSchema: () => networkChangeSchema,
101
+ permissionTemplate: () => permissionTemplate,
102
+ removeDefaultProvider: () => removeDefaultProvider,
103
+ renouncePermissionsMethodName: () => renouncePermissionsMethodName,
104
+ renouncePermissionsParamsSchema: () => renouncePermissionsParamsSchema,
105
+ renouncePermissionsRequestMessageSchema: () => renouncePermissionsRequestMessageSchema,
106
+ renouncePermissionsResultSchema: () => renouncePermissionsResultSchema,
107
+ request: () => request,
108
+ requestPermissionsMethodName: () => requestPermissionsMethodName,
109
+ requestPermissionsParamsSchema: () => requestPermissionsParamsSchema,
110
+ requestPermissionsRequestMessageSchema: () => requestPermissionsRequestMessageSchema,
111
+ requestPermissionsResultSchema: () => requestPermissionsResultSchema,
112
+ rpcErrorResponseMessageSchema: () => rpcErrorResponseMessageSchema,
113
+ rpcRequestMessageSchema: () => rpcRequestMessageSchema,
114
+ rpcResponseMessageSchema: () => rpcResponseMessageSchema,
115
+ rpcSuccessResponseMessageSchema: () => rpcSuccessResponseMessageSchema,
116
+ runesEtchMethodName: () => runesEtchMethodName,
117
+ runesEtchParamsSchema: () => runesEtchParamsSchema,
118
+ runesEtchRequestMessageSchema: () => runesEtchRequestMessageSchema,
119
+ runesEtchResultSchema: () => runesEtchResultSchema,
120
+ runesGetBalanceMethodName: () => runesGetBalanceMethodName,
121
+ runesGetBalanceParamsSchema: () => runesGetBalanceParamsSchema,
122
+ runesGetBalanceRequestMessageSchema: () => runesGetBalanceRequestMessageSchema,
123
+ runesGetBalanceResultSchema: () => runesGetBalanceResultSchema,
124
+ runesMintMethodName: () => runesMintMethodName,
125
+ runesMintParamsSchema: () => runesMintParamsSchema,
126
+ runesMintRequestMessageSchema: () => runesMintRequestMessageSchema,
127
+ runesMintResultSchema: () => runesMintResultSchema,
128
+ runesTransferMethodName: () => runesTransferMethodName,
129
+ runesTransferParamsSchema: () => runesTransferParamsSchema,
130
+ runesTransferRequestMessageSchema: () => runesTransferRequestMessageSchema,
131
+ runesTransferResultSchema: () => runesTransferResultSchema,
132
+ sendBtcTransaction: () => sendBtcTransaction,
133
+ sendInscriptionsMethodName: () => sendInscriptionsMethodName,
134
+ sendInscriptionsParamsSchema: () => sendInscriptionsParamsSchema,
135
+ sendInscriptionsRequestMessageSchema: () => sendInscriptionsRequestMessageSchema,
136
+ sendInscriptionsResultSchema: () => sendInscriptionsResultSchema,
137
+ sendTransferMethodName: () => sendTransferMethodName,
138
+ sendTransferParamsSchema: () => sendTransferParamsSchema,
139
+ sendTransferRequestMessageSchema: () => sendTransferRequestMessageSchema,
140
+ sendTransferResultSchema: () => sendTransferResultSchema,
141
+ setDefaultProvider: () => setDefaultProvider,
142
+ signMessage: () => signMessage,
143
+ signMessageMethodName: () => signMessageMethodName,
144
+ signMessageParamsSchema: () => signMessageParamsSchema,
145
+ signMessageRequestMessageSchema: () => signMessageRequestMessageSchema,
146
+ signMessageResultSchema: () => signMessageResultSchema,
147
+ signMultipleTransactions: () => signMultipleTransactions,
148
+ signPsbtMethodName: () => signPsbtMethodName,
149
+ signPsbtParamsSchema: () => signPsbtParamsSchema,
150
+ signPsbtRequestMessageSchema: () => signPsbtRequestMessageSchema,
151
+ signPsbtResultSchema: () => signPsbtResultSchema,
152
+ signTransaction: () => signTransaction,
153
+ stxCallContractMethodName: () => stxCallContractMethodName,
154
+ stxCallContractParamsSchema: () => stxCallContractParamsSchema,
155
+ stxCallContractRequestMessageSchema: () => stxCallContractRequestMessageSchema,
156
+ stxCallContractResultSchema: () => stxCallContractResultSchema,
157
+ stxDeployContractMethodName: () => stxDeployContractMethodName,
158
+ stxDeployContractParamsSchema: () => stxDeployContractParamsSchema,
159
+ stxDeployContractRequestMessageSchema: () => stxDeployContractRequestMessageSchema,
160
+ stxDeployContractResultSchema: () => stxDeployContractResultSchema,
161
+ stxGetAccountsMethodName: () => stxGetAccountsMethodName,
162
+ stxGetAccountsParamsSchema: () => stxGetAccountsParamsSchema,
163
+ stxGetAccountsRequestMessageSchema: () => stxGetAccountsRequestMessageSchema,
164
+ stxGetAccountsResultSchema: () => stxGetAccountsResultSchema,
165
+ stxGetAddressesMethodName: () => stxGetAddressesMethodName,
166
+ stxGetAddressesParamsSchema: () => stxGetAddressesParamsSchema,
167
+ stxGetAddressesRequestMessageSchema: () => stxGetAddressesRequestMessageSchema,
168
+ stxGetAddressesResultSchema: () => stxGetAddressesResultSchema,
169
+ stxSignMessageMethodName: () => stxSignMessageMethodName,
170
+ stxSignMessageParamsSchema: () => stxSignMessageParamsSchema,
171
+ stxSignMessageRequestMessageSchema: () => stxSignMessageRequestMessageSchema,
172
+ stxSignMessageResultSchema: () => stxSignMessageResultSchema,
173
+ stxSignStructuredMessageMethodName: () => stxSignStructuredMessageMethodName,
174
+ stxSignStructuredMessageParamsSchema: () => stxSignStructuredMessageParamsSchema,
175
+ stxSignStructuredMessageRequestMessageSchema: () => stxSignStructuredMessageRequestMessageSchema,
176
+ stxSignStructuredMessageResultSchema: () => stxSignStructuredMessageResultSchema,
177
+ stxSignTransactionMethodName: () => stxSignTransactionMethodName,
178
+ stxSignTransactionParamsSchema: () => stxSignTransactionParamsSchema,
179
+ stxSignTransactionRequestMessageSchema: () => stxSignTransactionRequestMessageSchema,
180
+ stxSignTransactionResultSchema: () => stxSignTransactionResultSchema,
181
+ stxTransferStxMethodName: () => stxTransferStxMethodName,
182
+ stxTransferStxParamsSchema: () => stxTransferStxParamsSchema,
183
+ stxTransferStxRequestMessageSchema: () => stxTransferStxRequestMessageSchema,
184
+ stxTransferStxResultSchema: () => stxTransferStxResultSchema,
185
+ walletEventSchema: () => walletEventSchema,
186
+ walletTypeSchema: () => walletTypeSchema,
187
+ walletTypes: () => walletTypes
188
+ });
189
+ module.exports = __toCommonJS(src_exports);
190
+
191
+ // src/provider/types.ts
192
+ var v = __toESM(require("valibot"));
193
+ var accountChangeEventName = "accountChange";
194
+ var accountChangeSchema = v.object({
195
+ type: v.literal(accountChangeEventName)
196
+ });
197
+ var networkChangeEventName = "networkChange";
198
+ var networkChangeSchema = v.object({
199
+ type: v.literal(networkChangeEventName)
200
+ });
201
+ var disconnectEventName = "disconnect";
202
+ var disconnectSchema = v.object({
203
+ type: v.literal(disconnectEventName)
204
+ });
205
+ var walletEventSchema = v.variant("type", [
206
+ accountChangeSchema,
207
+ networkChangeSchema,
208
+ disconnectSchema
209
+ ]);
210
+
211
+ // src/provider/index.ts
212
+ async function getProviderOrThrow(getProvider) {
213
+ const provider = await getProvider?.() || window.XverseProviders?.BitcoinProvider || window.BitcoinProvider;
214
+ if (!provider) {
215
+ throw new Error("No Bitcoin wallet installed");
216
+ }
217
+ return provider;
218
+ }
219
+ function getProviders() {
220
+ if (!window.btc_providers) window.btc_providers = [];
221
+ return window.btc_providers;
222
+ }
223
+ function getProviderById(providerId) {
224
+ return providerId?.split(".").reduce((acc, part) => acc?.[part], window);
225
+ }
226
+ function isProviderInstalled(providerId) {
227
+ return !!getProviderById(providerId);
228
+ }
229
+ function setDefaultProvider(providerId) {
230
+ localStorage.setItem("sats-connect_defaultProvider", providerId);
231
+ }
232
+ function getDefaultProvider() {
233
+ return localStorage.getItem("sats-connect_defaultProvider");
234
+ }
235
+ function removeDefaultProvider() {
236
+ localStorage.removeItem("sats-connect_defaultProvider");
237
+ }
238
+ function getSupportedWallets() {
239
+ const wallets = Object.values(DefaultAdaptersInfo).map((provider) => {
240
+ {
241
+ return {
242
+ ...provider,
243
+ isInstalled: isProviderInstalled(provider.id)
244
+ };
245
+ }
246
+ });
247
+ return wallets;
248
+ }
249
+
250
+ // src/types.ts
251
+ var v2 = __toESM(require("valibot"));
252
+ var BitcoinNetworkType = /* @__PURE__ */ ((BitcoinNetworkType2) => {
253
+ BitcoinNetworkType2["Mainnet"] = "Mainnet";
254
+ BitcoinNetworkType2["Testnet"] = "Testnet";
255
+ BitcoinNetworkType2["Signet"] = "Signet";
256
+ return BitcoinNetworkType2;
257
+ })(BitcoinNetworkType || {});
258
+ var RpcIdSchema = v2.optional(v2.union([v2.string(), v2.number(), v2.null()]));
259
+ var rpcRequestMessageSchema = v2.object({
260
+ jsonrpc: v2.literal("2.0"),
261
+ method: v2.string(),
262
+ params: v2.optional(
263
+ v2.union([
264
+ v2.array(v2.unknown()),
265
+ v2.looseObject({}),
266
+ // Note: This is to support current incorrect usage of RPC 2.0. Params need
267
+ // to be either an array or an object when provided. Changing this now would
268
+ // be a breaking change, so accepting null values for now. Tracking in
269
+ // https://linear.app/xverseapp/issue/ENG-4538.
270
+ v2.null()
271
+ ])
272
+ ),
273
+ id: v2.unwrap(RpcIdSchema)
274
+ });
275
+ var RpcErrorCode = /* @__PURE__ */ ((RpcErrorCode2) => {
276
+ RpcErrorCode2[RpcErrorCode2["PARSE_ERROR"] = -32700] = "PARSE_ERROR";
277
+ RpcErrorCode2[RpcErrorCode2["INVALID_REQUEST"] = -32600] = "INVALID_REQUEST";
278
+ RpcErrorCode2[RpcErrorCode2["METHOD_NOT_FOUND"] = -32601] = "METHOD_NOT_FOUND";
279
+ RpcErrorCode2[RpcErrorCode2["INVALID_PARAMS"] = -32602] = "INVALID_PARAMS";
280
+ RpcErrorCode2[RpcErrorCode2["INTERNAL_ERROR"] = -32603] = "INTERNAL_ERROR";
281
+ RpcErrorCode2[RpcErrorCode2["USER_REJECTION"] = -32e3] = "USER_REJECTION";
282
+ RpcErrorCode2[RpcErrorCode2["METHOD_NOT_SUPPORTED"] = -32001] = "METHOD_NOT_SUPPORTED";
283
+ RpcErrorCode2[RpcErrorCode2["ACCESS_DENIED"] = -32002] = "ACCESS_DENIED";
284
+ return RpcErrorCode2;
285
+ })(RpcErrorCode || {});
286
+ var rpcSuccessResponseMessageSchema = v2.object({
287
+ jsonrpc: v2.literal("2.0"),
288
+ result: v2.nonOptional(v2.unknown()),
289
+ id: RpcIdSchema
290
+ });
291
+ var rpcErrorResponseMessageSchema = v2.object({
292
+ jsonrpc: v2.literal("2.0"),
293
+ error: v2.nonOptional(v2.unknown()),
294
+ id: RpcIdSchema
295
+ });
296
+ var rpcResponseMessageSchema = v2.union([
297
+ rpcSuccessResponseMessageSchema,
298
+ rpcErrorResponseMessageSchema
299
+ ]);
300
+
301
+ // src/request/index.ts
302
+ var v25 = __toESM(require("valibot"));
303
+
304
+ // src/request/types/stxMethods/callContract.ts
305
+ var v3 = __toESM(require("valibot"));
306
+ var stxCallContractMethodName = "stx_callContract";
307
+ var stxCallContractParamsSchema = v3.object({
308
+ /**
309
+ * The contract principal.
310
+ *
311
+ * E.g. `"SPKE...GD5C.my-contract"`
312
+ */
313
+ contract: v3.string(),
314
+ /**
315
+ * The name of the function to call.
316
+ *
317
+ * Note: spec changes ongoing,
318
+ * https://github.com/stacksgov/sips/pull/166#pullrequestreview-1914236999
319
+ */
320
+ functionName: v3.string(),
321
+ /**
322
+ * The function's arguments. The arguments are expected to be hex-encoded
323
+ * strings of Clarity values.
324
+ *
325
+ * To convert Clarity values to their hex representation, the `cvToString`
326
+ * helper from the `@stacks/transactions` package may be helpful.
327
+ *
328
+ * ```js
329
+ * import { cvToString } from '@stacks/transactions';
330
+ *
331
+ * const functionArgs = [someClarityValue1, someClarityValue2];
332
+ * const hexArgs = functionArgs.map(cvToString);
333
+ * ```
334
+ */
335
+ arguments: v3.optional(v3.array(v3.string()))
336
+ });
337
+ var stxCallContractResultSchema = v3.object({
338
+ /**
339
+ * The ID of the transaction.
340
+ */
341
+ txid: v3.string(),
342
+ /**
343
+ * A Stacks transaction as a hex-encoded string.
344
+ */
345
+ transaction: v3.string()
346
+ });
347
+ var stxCallContractRequestMessageSchema = v3.object({
348
+ ...rpcRequestMessageSchema.entries,
349
+ ...v3.object({
350
+ method: v3.literal(stxCallContractMethodName),
351
+ params: stxCallContractParamsSchema,
352
+ id: v3.string()
353
+ }).entries
354
+ });
355
+
356
+ // src/request/types/stxMethods/deployContract.ts
357
+ var v4 = __toESM(require("valibot"));
358
+ var stxDeployContractMethodName = "stx_deployContract";
359
+ var stxDeployContractParamsSchema = v4.object({
360
+ /**
361
+ * Name of the contract.
362
+ */
363
+ name: v4.string(),
364
+ /**
365
+ * The source code of the Clarity contract.
366
+ */
367
+ clarityCode: v4.string(),
368
+ /**
369
+ * The version of the Clarity contract.
370
+ */
371
+ clarityVersion: v4.optional(v4.string())
372
+ });
373
+ var stxDeployContractResultSchema = v4.object({
374
+ /**
375
+ * The ID of the transaction.
376
+ */
377
+ txid: v4.string(),
378
+ /**
379
+ * A Stacks transaction as a hex-encoded string.
380
+ */
381
+ transaction: v4.string()
382
+ });
383
+ var stxDeployContractRequestMessageSchema = v4.object({
384
+ ...rpcRequestMessageSchema.entries,
385
+ ...v4.object({
386
+ method: v4.literal(stxDeployContractMethodName),
387
+ params: stxDeployContractParamsSchema,
388
+ id: v4.string()
389
+ }).entries
390
+ });
391
+
392
+ // src/request/types/stxMethods/getAccounts.ts
393
+ var v5 = __toESM(require("valibot"));
394
+ var stxGetAccountsMethodName = "stx_getAccounts";
395
+ var stxGetAccountsParamsSchema = v5.nullish(v5.null());
396
+ var stxGetAccountsResultSchema = v5.object({
397
+ /**
398
+ * The addresses generated for the given purposes.
399
+ */
400
+ addresses: v5.array(
401
+ v5.object({
402
+ address: v5.string(),
403
+ publicKey: v5.string(),
404
+ gaiaHubUrl: v5.string(),
405
+ gaiaAppKey: v5.string()
406
+ })
407
+ )
408
+ });
409
+ var stxGetAccountsRequestMessageSchema = v5.object({
410
+ ...rpcRequestMessageSchema.entries,
411
+ ...v5.object({
412
+ method: v5.literal(stxGetAccountsMethodName),
413
+ params: stxGetAccountsParamsSchema,
414
+ id: v5.string()
415
+ }).entries
416
+ });
417
+
418
+ // src/addresses/index.ts
419
+ var import_jsontokens = require("jsontokens");
420
+
421
+ // src/addresses/types.ts
422
+ var v6 = __toESM(require("valibot"));
423
+ var AddressPurpose = /* @__PURE__ */ ((AddressPurpose2) => {
424
+ AddressPurpose2["Ordinals"] = "ordinals";
425
+ AddressPurpose2["Payment"] = "payment";
426
+ AddressPurpose2["Stacks"] = "stacks";
427
+ return AddressPurpose2;
428
+ })(AddressPurpose || {});
429
+ var AddressType = /* @__PURE__ */ ((AddressType3) => {
430
+ AddressType3["p2pkh"] = "p2pkh";
431
+ AddressType3["p2sh"] = "p2sh";
432
+ AddressType3["p2wpkh"] = "p2wpkh";
433
+ AddressType3["p2wsh"] = "p2wsh";
434
+ AddressType3["p2tr"] = "p2tr";
435
+ AddressType3["stacks"] = "stacks";
436
+ return AddressType3;
437
+ })(AddressType || {});
438
+ var addressSchema = v6.object({
439
+ address: v6.string(),
440
+ publicKey: v6.string(),
441
+ purpose: v6.enum(AddressPurpose),
442
+ addressType: v6.enum(AddressType)
443
+ });
444
+
445
+ // src/addresses/index.ts
446
+ var getAddress = async (options) => {
447
+ const provider = await getProviderOrThrow(options.getProvider);
448
+ const { purposes } = options.payload;
449
+ if (!purposes) {
450
+ throw new Error("Address purposes are required");
451
+ }
452
+ try {
453
+ const request2 = (0, import_jsontokens.createUnsecuredToken)(options.payload);
454
+ const response = await provider.connect(request2);
455
+ options.onFinish?.(response);
456
+ } catch (error) {
457
+ console.error("[Connect] Error during address request", error);
458
+ options.onCancel?.();
459
+ }
460
+ };
461
+
462
+ // src/request/types/stxMethods/getAddresses.ts
463
+ var v7 = __toESM(require("valibot"));
464
+ var stxGetAddressesMethodName = "stx_getAddresses";
465
+ var stxGetAddressesParamsSchema = v7.nullish(
466
+ v7.object({
467
+ /**
468
+ * A message to be displayed to the user in the request prompt.
469
+ */
470
+ message: v7.optional(v7.string())
471
+ })
472
+ );
473
+ var stxGetAddressesResultSchema = v7.object({
474
+ /**
475
+ * The addresses generated for the given purposes.
476
+ */
477
+ addresses: v7.array(addressSchema)
478
+ });
479
+ var stxGetAddressesRequestMessageSchema = v7.object({
480
+ ...rpcRequestMessageSchema.entries,
481
+ ...v7.object({
482
+ method: v7.literal(stxGetAddressesMethodName),
483
+ params: stxGetAddressesParamsSchema,
484
+ id: v7.string()
485
+ }).entries
486
+ });
487
+
488
+ // src/request/types/stxMethods/signMessage.ts
489
+ var v8 = __toESM(require("valibot"));
490
+ var stxSignMessageMethodName = "stx_signMessage";
491
+ var stxSignMessageParamsSchema = v8.object({
492
+ /**
493
+ * The message to sign.
494
+ */
495
+ message: v8.string(),
496
+ /**
497
+ * The public key to sign the message with.
498
+ */
499
+ publicKey: v8.string(),
500
+ /**
501
+ * The format version of the parameter.
502
+ */
503
+ parameterFormatVersion: v8.optional(v8.number())
504
+ });
505
+ var stxSignMessageResultSchema = v8.object({
506
+ /**
507
+ * The signature of the message.
508
+ */
509
+ signature: v8.string(),
510
+ /**
511
+ * The public key used to sign the message.
512
+ */
513
+ publicKey: v8.string()
514
+ });
515
+ var stxSignMessageRequestMessageSchema = v8.object({
516
+ ...rpcRequestMessageSchema.entries,
517
+ ...v8.object({
518
+ method: v8.literal(stxSignMessageMethodName),
519
+ params: stxSignMessageParamsSchema,
520
+ id: v8.string()
521
+ }).entries
522
+ });
523
+
524
+ // src/request/types/stxMethods/signStructuredMessage.ts
525
+ var v9 = __toESM(require("valibot"));
526
+ var stxSignStructuredMessageMethodName = "stx_signStructuredMessage";
527
+ var stxSignStructuredMessageParamsSchema = v9.object({
528
+ /**
529
+ * The domain to be signed.
530
+ */
531
+ domain: v9.string(),
532
+ /**
533
+ * Message payload to be signed.
534
+ */
535
+ message: v9.string(),
536
+ /**
537
+ * The format version of the parameter.
538
+ */
539
+ parameterFormatVersion: v9.optional(v9.number()),
540
+ /**
541
+ * The public key to sign the message with.
542
+ */
543
+ publicKey: v9.optional(v9.string())
544
+ });
545
+ var stxSignStructuredMessageResultSchema = v9.object({
546
+ /**
547
+ * Signature of the message.
548
+ */
549
+ signature: v9.string(),
550
+ /**
551
+ * Public key as hex-encoded string.
552
+ */
553
+ publicKey: v9.string()
554
+ });
555
+ var stxSignStructuredMessageRequestMessageSchema = v9.object({
556
+ ...rpcRequestMessageSchema.entries,
557
+ ...v9.object({
558
+ method: v9.literal(stxSignStructuredMessageMethodName),
559
+ params: stxSignStructuredMessageParamsSchema,
560
+ id: v9.string()
561
+ }).entries
562
+ });
563
+
564
+ // src/request/types/stxMethods/signTransaction.ts
565
+ var v10 = __toESM(require("valibot"));
566
+ var stxSignTransactionMethodName = "stx_signTransaction";
567
+ var stxSignTransactionParamsSchema = v10.object({
568
+ /**
569
+ * The transaction to sign as a hex-encoded string.
570
+ */
571
+ transaction: v10.string(),
572
+ /**
573
+ * The public key to sign the transaction with. The wallet may use any key
574
+ * when not provided.
575
+ */
576
+ pubkey: v10.optional(v10.string()),
577
+ /**
578
+ * Whether to broadcast the transaction after signing. Defaults to `true`.
579
+ */
580
+ broadcast: v10.optional(v10.boolean())
581
+ });
582
+ var stxSignTransactionResultSchema = v10.object({
583
+ /**
584
+ * The signed transaction as a hex-encoded string.
585
+ */
586
+ transaction: v10.string()
587
+ });
588
+ var stxSignTransactionRequestMessageSchema = v10.object({
589
+ ...rpcRequestMessageSchema.entries,
590
+ ...v10.object({
591
+ method: v10.literal(stxSignTransactionMethodName),
592
+ params: stxSignTransactionParamsSchema,
593
+ id: v10.string()
594
+ }).entries
595
+ });
596
+
597
+ // src/request/types/stxMethods/transferStx.ts
598
+ var v11 = __toESM(require("valibot"));
599
+ var stxTransferStxMethodName = "stx_transferStx";
600
+ var stxTransferStxParamsSchema = v11.object({
601
+ /**
602
+ * Amount of STX tokens to transfer in microstacks as a string. Anything
603
+ * parseable by `BigInt` is acceptable.
604
+ *
605
+ * Example,
606
+ *
607
+ * ```js
608
+ * const amount1 = 1234;
609
+ * const amount2 = 1234n;
610
+ * const amount3 = '1234';
611
+ * ```
612
+ */
613
+ amount: v11.union([v11.number(), v11.string()]),
614
+ /**
615
+ * The recipeint's principal.
616
+ */
617
+ recipient: v11.string(),
618
+ /**
619
+ * A string representing the memo.
620
+ */
621
+ memo: v11.optional(v11.string()),
622
+ /**
623
+ * Version of parameter format.
624
+ */
625
+ version: v11.optional(v11.string()),
626
+ /**
627
+ * The mode of the post conditions.
628
+ */
629
+ postConditionMode: v11.optional(v11.number()),
630
+ /**
631
+ * A hex-encoded string representing the post conditions.
632
+ *
633
+ * A post condition may be converted to it's hex representation using the `serializePostCondition` helper from the `@stacks/transactions` package,
634
+ *
635
+ * ```js
636
+ * import { serializePostCondition } from '@stacks/transactions';
637
+ *
638
+ * const postCondition = somePostCondition;
639
+ * const hexPostCondition = serializePostCondition(postCondition).toString('hex');
640
+ * ```
641
+ */
642
+ postConditions: v11.optional(v11.array(v11.string())),
643
+ /**
644
+ * The public key to sign the transaction with. The wallet may use any key
645
+ * when not provided.
646
+ */
647
+ pubkey: v11.optional(v11.string())
648
+ });
649
+ var stxTransferStxResultSchema = v11.object({
650
+ /**
651
+ * The ID of the transaction.
652
+ */
653
+ txid: v11.string(),
654
+ /**
655
+ * A Stacks transaction as a hex-encoded string.
656
+ */
657
+ transaction: v11.string()
658
+ });
659
+ var stxTransferStxRequestMessageSchema = v11.object({
660
+ ...rpcRequestMessageSchema.entries,
661
+ ...v11.object({
662
+ method: v11.literal(stxTransferStxMethodName),
663
+ params: stxTransferStxParamsSchema,
664
+ id: v11.string()
665
+ }).entries
666
+ });
667
+
668
+ // src/request/types/btcMethods.ts
669
+ var v13 = __toESM(require("valibot"));
670
+
671
+ // src/request/types/common.ts
672
+ var v12 = __toESM(require("valibot"));
673
+ var walletTypes = ["software", "ledger"];
674
+ var walletTypeSchema = v12.picklist(walletTypes);
675
+
676
+ // src/request/types/btcMethods.ts
677
+ var getInfoMethodName = "getInfo";
678
+ var getInfoParamsSchema = v13.nullish(v13.null());
679
+ var getInfoResultSchema = v13.object({
680
+ /**
681
+ * Version of the wallet.
682
+ */
683
+ version: v13.string(),
684
+ /**
685
+ * [WBIP](https://wbips.netlify.app/wbips/WBIP002) methods supported by the wallet.
686
+ */
687
+ methods: v13.optional(v13.array(v13.string())),
688
+ /**
689
+ * List of WBIP standards supported by the wallet. Not currently used.
690
+ */
691
+ supports: v13.array(v13.string())
692
+ });
693
+ var getInfoRequestMessageSchema = v13.object({
694
+ ...rpcRequestMessageSchema.entries,
695
+ ...v13.object({
696
+ method: v13.literal(getInfoMethodName),
697
+ params: getInfoParamsSchema,
698
+ id: v13.string()
699
+ }).entries
700
+ });
701
+ var getAddressesMethodName = "getAddresses";
702
+ var getAddressesParamsSchema = v13.object({
703
+ /**
704
+ * The purposes for which to generate addresses. See
705
+ * {@linkcode AddressPurpose} for available purposes.
706
+ */
707
+ purposes: v13.array(v13.enum(AddressPurpose)),
708
+ /**
709
+ * A message to be displayed to the user in the request prompt.
710
+ */
711
+ message: v13.optional(v13.string())
712
+ });
713
+ var getAddressesResultSchema = v13.object({
714
+ /**
715
+ * The addresses generated for the given purposes.
716
+ */
717
+ addresses: v13.array(addressSchema)
718
+ });
719
+ var getAddressesRequestMessageSchema = v13.object({
720
+ ...rpcRequestMessageSchema.entries,
721
+ ...v13.object({
722
+ method: v13.literal(getAddressesMethodName),
723
+ params: getAddressesParamsSchema,
724
+ id: v13.string()
725
+ }).entries
726
+ });
727
+ var signMessageMethodName = "signMessage";
728
+ var MessageSigningProtocols = /* @__PURE__ */ ((MessageSigningProtocols2) => {
729
+ MessageSigningProtocols2["ECDSA"] = "ECDSA";
730
+ MessageSigningProtocols2["BIP322"] = "BIP322";
731
+ return MessageSigningProtocols2;
732
+ })(MessageSigningProtocols || {});
733
+ var signMessageParamsSchema = v13.object({
734
+ /**
735
+ * The address used for signing.
736
+ **/
737
+ address: v13.string(),
738
+ /**
739
+ * The message to sign.
740
+ **/
741
+ message: v13.string(),
742
+ /**
743
+ * The protocol to use for signing the message.
744
+ */
745
+ protocol: v13.optional(v13.enum(MessageSigningProtocols))
746
+ });
747
+ var signMessageResultSchema = v13.object({
748
+ /**
749
+ * The signature of the message.
750
+ */
751
+ signature: v13.string(),
752
+ /**
753
+ * hash of the message.
754
+ */
755
+ messageHash: v13.string(),
756
+ /**
757
+ * The address used for signing.
758
+ */
759
+ address: v13.string(),
760
+ /**
761
+ * The protocol to use for signing the message.
762
+ */
763
+ protocol: v13.enum(MessageSigningProtocols)
764
+ });
765
+ var signMessageRequestMessageSchema = v13.object({
766
+ ...rpcRequestMessageSchema.entries,
767
+ ...v13.object({
768
+ method: v13.literal(signMessageMethodName),
769
+ params: signMessageParamsSchema,
770
+ id: v13.string()
771
+ }).entries
772
+ });
773
+ var sendTransferMethodName = "sendTransfer";
774
+ var sendTransferParamsSchema = v13.object({
775
+ /**
776
+ * Array of recipients to send to.
777
+ * The amount to send to each recipient is in satoshis.
778
+ */
779
+ recipients: v13.array(
780
+ v13.object({
781
+ address: v13.string(),
782
+ amount: v13.number()
783
+ })
784
+ )
785
+ });
786
+ var sendTransferResultSchema = v13.object({
787
+ /**
788
+ * The transaction id as a hex-encoded string.
789
+ */
790
+ txid: v13.string()
791
+ });
792
+ var sendTransferRequestMessageSchema = v13.object({
793
+ ...rpcRequestMessageSchema.entries,
794
+ ...v13.object({
795
+ method: v13.literal(sendTransferMethodName),
796
+ params: sendTransferParamsSchema,
797
+ id: v13.string()
798
+ }).entries
799
+ });
800
+ var signPsbtMethodName = "signPsbt";
801
+ var signPsbtParamsSchema = v13.object({
802
+ /**
803
+ * The base64 encoded PSBT to sign.
804
+ */
805
+ psbt: v13.string(),
806
+ /**
807
+ * The inputs to sign.
808
+ * The key is the address and the value is an array of indexes of the inputs to sign.
809
+ */
810
+ signInputs: v13.record(v13.string(), v13.array(v13.number())),
811
+ /**
812
+ * Whether to broadcast the transaction after signing.
813
+ **/
814
+ broadcast: v13.optional(v13.boolean())
815
+ });
816
+ var signPsbtResultSchema = v13.object({
817
+ /**
818
+ * The base64 encoded PSBT after signing.
819
+ */
820
+ psbt: v13.string(),
821
+ /**
822
+ * The transaction id as a hex-encoded string.
823
+ * This is only returned if the transaction was broadcast.
824
+ **/
825
+ txid: v13.optional(v13.string())
826
+ });
827
+ var signPsbtRequestMessageSchema = v13.object({
828
+ ...rpcRequestMessageSchema.entries,
829
+ ...v13.object({
830
+ method: v13.literal(signPsbtMethodName),
831
+ params: signPsbtParamsSchema,
832
+ id: v13.string()
833
+ }).entries
834
+ });
835
+ var getAccountsMethodName = "getAccounts";
836
+ var getAccountsParamsSchema = v13.object({
837
+ /**
838
+ * The purposes for which to generate addresses. See
839
+ * {@linkcode AddressPurpose} for available purposes.
840
+ */
841
+ purposes: v13.array(v13.enum(AddressPurpose)),
842
+ /**
843
+ * A message to be displayed to the user in the request prompt.
844
+ */
845
+ message: v13.optional(v13.string())
846
+ });
847
+ var getAccountsResultSchema = v13.array(
848
+ v13.object({
849
+ ...addressSchema.entries,
850
+ ...v13.object({
851
+ walletType: walletTypeSchema
852
+ }).entries
853
+ })
854
+ );
855
+ var getAccountsRequestMessageSchema = v13.object({
856
+ ...rpcRequestMessageSchema.entries,
857
+ ...v13.object({
858
+ method: v13.literal(getAccountsMethodName),
859
+ params: getAccountsParamsSchema,
860
+ id: v13.string()
861
+ }).entries
862
+ });
863
+ var getBalanceMethodName = "getBalance";
864
+ var getBalanceParamsSchema = v13.nullish(v13.null());
865
+ var getBalanceResultSchema = v13.object({
866
+ /**
867
+ * The confirmed balance of the wallet in sats. Using a string due to chrome
868
+ * messages not supporting bigint
869
+ * (https://issues.chromium.org/issues/40116184).
870
+ */
871
+ confirmed: v13.string(),
872
+ /**
873
+ * The unconfirmed balance of the wallet in sats. Using a string due to chrome
874
+ * messages not supporting bigint
875
+ * (https://issues.chromium.org/issues/40116184).
876
+ */
877
+ unconfirmed: v13.string(),
878
+ /**
879
+ * The total balance (both confirmed and unconfrimed UTXOs) of the wallet in
880
+ * sats. Using a string due to chrome messages not supporting bigint
881
+ * (https://issues.chromium.org/issues/40116184).
882
+ */
883
+ total: v13.string()
884
+ });
885
+ var getBalanceRequestMessageSchema = v13.object({
886
+ ...rpcRequestMessageSchema.entries,
887
+ ...v13.object({
888
+ method: v13.literal(getBalanceMethodName),
889
+ id: v13.string()
890
+ }).entries
891
+ });
892
+
893
+ // src/request/types/walletMethods.ts
894
+ var v19 = __toESM(require("valibot"));
895
+
896
+ // node_modules/@noble/hashes/esm/_assert.js
897
+ function isBytes(a) {
898
+ return a instanceof Uint8Array || a != null && typeof a === "object" && a.constructor.name === "Uint8Array";
899
+ }
900
+ function bytes(b, ...lengths) {
901
+ if (!isBytes(b))
902
+ throw new Error("Uint8Array expected");
903
+ if (lengths.length > 0 && !lengths.includes(b.length))
904
+ throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);
905
+ }
906
+ function exists(instance, checkFinished = true) {
907
+ if (instance.destroyed)
908
+ throw new Error("Hash instance has been destroyed");
909
+ if (checkFinished && instance.finished)
910
+ throw new Error("Hash#digest() has already been called");
911
+ }
912
+ function output(out, instance) {
913
+ bytes(out);
914
+ const min = instance.outputLen;
915
+ if (out.length < min) {
916
+ throw new Error(`digestInto() expects output buffer of length at least ${min}`);
917
+ }
918
+ }
919
+
920
+ // node_modules/@noble/hashes/esm/utils.js
921
+ var createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);
922
+ var rotr = (word, shift) => word << 32 - shift | word >>> shift;
923
+ var isLE = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68;
924
+ var hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
925
+ function bytesToHex(bytes2) {
926
+ bytes(bytes2);
927
+ let hex = "";
928
+ for (let i = 0; i < bytes2.length; i++) {
929
+ hex += hexes[bytes2[i]];
930
+ }
931
+ return hex;
932
+ }
933
+ function utf8ToBytes(str) {
934
+ if (typeof str !== "string")
935
+ throw new Error(`utf8ToBytes expected string, got ${typeof str}`);
936
+ return new Uint8Array(new TextEncoder().encode(str));
937
+ }
938
+ function toBytes(data) {
939
+ if (typeof data === "string")
940
+ data = utf8ToBytes(data);
941
+ bytes(data);
942
+ return data;
943
+ }
944
+ var Hash = class {
945
+ // Safe version that clones internal state
946
+ clone() {
947
+ return this._cloneInto();
948
+ }
949
+ };
950
+ var toStr = {}.toString;
951
+ function wrapConstructor(hashCons) {
952
+ const hashC = (msg) => hashCons().update(toBytes(msg)).digest();
953
+ const tmp = hashCons();
954
+ hashC.outputLen = tmp.outputLen;
955
+ hashC.blockLen = tmp.blockLen;
956
+ hashC.create = () => hashCons();
957
+ return hashC;
958
+ }
959
+
960
+ // node_modules/@noble/hashes/esm/_md.js
961
+ function setBigUint64(view, byteOffset, value, isLE2) {
962
+ if (typeof view.setBigUint64 === "function")
963
+ return view.setBigUint64(byteOffset, value, isLE2);
964
+ const _32n = BigInt(32);
965
+ const _u32_max = BigInt(4294967295);
966
+ const wh = Number(value >> _32n & _u32_max);
967
+ const wl = Number(value & _u32_max);
968
+ const h = isLE2 ? 4 : 0;
969
+ const l = isLE2 ? 0 : 4;
970
+ view.setUint32(byteOffset + h, wh, isLE2);
971
+ view.setUint32(byteOffset + l, wl, isLE2);
972
+ }
973
+ var Chi = (a, b, c) => a & b ^ ~a & c;
974
+ var Maj = (a, b, c) => a & b ^ a & c ^ b & c;
975
+ var HashMD = class extends Hash {
976
+ constructor(blockLen, outputLen, padOffset, isLE2) {
977
+ super();
978
+ this.blockLen = blockLen;
979
+ this.outputLen = outputLen;
980
+ this.padOffset = padOffset;
981
+ this.isLE = isLE2;
982
+ this.finished = false;
983
+ this.length = 0;
984
+ this.pos = 0;
985
+ this.destroyed = false;
986
+ this.buffer = new Uint8Array(blockLen);
987
+ this.view = createView(this.buffer);
988
+ }
989
+ update(data) {
990
+ exists(this);
991
+ const { view, buffer, blockLen } = this;
992
+ data = toBytes(data);
993
+ const len = data.length;
994
+ for (let pos = 0; pos < len; ) {
995
+ const take = Math.min(blockLen - this.pos, len - pos);
996
+ if (take === blockLen) {
997
+ const dataView = createView(data);
998
+ for (; blockLen <= len - pos; pos += blockLen)
999
+ this.process(dataView, pos);
1000
+ continue;
1001
+ }
1002
+ buffer.set(data.subarray(pos, pos + take), this.pos);
1003
+ this.pos += take;
1004
+ pos += take;
1005
+ if (this.pos === blockLen) {
1006
+ this.process(view, 0);
1007
+ this.pos = 0;
1008
+ }
1009
+ }
1010
+ this.length += data.length;
1011
+ this.roundClean();
1012
+ return this;
1013
+ }
1014
+ digestInto(out) {
1015
+ exists(this);
1016
+ output(out, this);
1017
+ this.finished = true;
1018
+ const { buffer, view, blockLen, isLE: isLE2 } = this;
1019
+ let { pos } = this;
1020
+ buffer[pos++] = 128;
1021
+ this.buffer.subarray(pos).fill(0);
1022
+ if (this.padOffset > blockLen - pos) {
1023
+ this.process(view, 0);
1024
+ pos = 0;
1025
+ }
1026
+ for (let i = pos; i < blockLen; i++)
1027
+ buffer[i] = 0;
1028
+ setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE2);
1029
+ this.process(view, 0);
1030
+ const oview = createView(out);
1031
+ const len = this.outputLen;
1032
+ if (len % 4)
1033
+ throw new Error("_sha2: outputLen should be aligned to 32bit");
1034
+ const outLen = len / 4;
1035
+ const state = this.get();
1036
+ if (outLen > state.length)
1037
+ throw new Error("_sha2: outputLen bigger than state");
1038
+ for (let i = 0; i < outLen; i++)
1039
+ oview.setUint32(4 * i, state[i], isLE2);
1040
+ }
1041
+ digest() {
1042
+ const { buffer, outputLen } = this;
1043
+ this.digestInto(buffer);
1044
+ const res = buffer.slice(0, outputLen);
1045
+ this.destroy();
1046
+ return res;
1047
+ }
1048
+ _cloneInto(to) {
1049
+ to || (to = new this.constructor());
1050
+ to.set(...this.get());
1051
+ const { blockLen, buffer, length, finished, destroyed, pos } = this;
1052
+ to.length = length;
1053
+ to.pos = pos;
1054
+ to.finished = finished;
1055
+ to.destroyed = destroyed;
1056
+ if (length % blockLen)
1057
+ to.buffer.set(buffer);
1058
+ return to;
1059
+ }
1060
+ };
1061
+
1062
+ // node_modules/@noble/hashes/esm/sha256.js
1063
+ var SHA256_K = /* @__PURE__ */ new Uint32Array([
1064
+ 1116352408,
1065
+ 1899447441,
1066
+ 3049323471,
1067
+ 3921009573,
1068
+ 961987163,
1069
+ 1508970993,
1070
+ 2453635748,
1071
+ 2870763221,
1072
+ 3624381080,
1073
+ 310598401,
1074
+ 607225278,
1075
+ 1426881987,
1076
+ 1925078388,
1077
+ 2162078206,
1078
+ 2614888103,
1079
+ 3248222580,
1080
+ 3835390401,
1081
+ 4022224774,
1082
+ 264347078,
1083
+ 604807628,
1084
+ 770255983,
1085
+ 1249150122,
1086
+ 1555081692,
1087
+ 1996064986,
1088
+ 2554220882,
1089
+ 2821834349,
1090
+ 2952996808,
1091
+ 3210313671,
1092
+ 3336571891,
1093
+ 3584528711,
1094
+ 113926993,
1095
+ 338241895,
1096
+ 666307205,
1097
+ 773529912,
1098
+ 1294757372,
1099
+ 1396182291,
1100
+ 1695183700,
1101
+ 1986661051,
1102
+ 2177026350,
1103
+ 2456956037,
1104
+ 2730485921,
1105
+ 2820302411,
1106
+ 3259730800,
1107
+ 3345764771,
1108
+ 3516065817,
1109
+ 3600352804,
1110
+ 4094571909,
1111
+ 275423344,
1112
+ 430227734,
1113
+ 506948616,
1114
+ 659060556,
1115
+ 883997877,
1116
+ 958139571,
1117
+ 1322822218,
1118
+ 1537002063,
1119
+ 1747873779,
1120
+ 1955562222,
1121
+ 2024104815,
1122
+ 2227730452,
1123
+ 2361852424,
1124
+ 2428436474,
1125
+ 2756734187,
1126
+ 3204031479,
1127
+ 3329325298
1128
+ ]);
1129
+ var SHA256_IV = /* @__PURE__ */ new Uint32Array([
1130
+ 1779033703,
1131
+ 3144134277,
1132
+ 1013904242,
1133
+ 2773480762,
1134
+ 1359893119,
1135
+ 2600822924,
1136
+ 528734635,
1137
+ 1541459225
1138
+ ]);
1139
+ var SHA256_W = /* @__PURE__ */ new Uint32Array(64);
1140
+ var SHA256 = class extends HashMD {
1141
+ constructor() {
1142
+ super(64, 32, 8, false);
1143
+ this.A = SHA256_IV[0] | 0;
1144
+ this.B = SHA256_IV[1] | 0;
1145
+ this.C = SHA256_IV[2] | 0;
1146
+ this.D = SHA256_IV[3] | 0;
1147
+ this.E = SHA256_IV[4] | 0;
1148
+ this.F = SHA256_IV[5] | 0;
1149
+ this.G = SHA256_IV[6] | 0;
1150
+ this.H = SHA256_IV[7] | 0;
1151
+ }
1152
+ get() {
1153
+ const { A, B, C, D, E, F, G, H } = this;
1154
+ return [A, B, C, D, E, F, G, H];
1155
+ }
1156
+ // prettier-ignore
1157
+ set(A, B, C, D, E, F, G, H) {
1158
+ this.A = A | 0;
1159
+ this.B = B | 0;
1160
+ this.C = C | 0;
1161
+ this.D = D | 0;
1162
+ this.E = E | 0;
1163
+ this.F = F | 0;
1164
+ this.G = G | 0;
1165
+ this.H = H | 0;
1166
+ }
1167
+ process(view, offset) {
1168
+ for (let i = 0; i < 16; i++, offset += 4)
1169
+ SHA256_W[i] = view.getUint32(offset, false);
1170
+ for (let i = 16; i < 64; i++) {
1171
+ const W15 = SHA256_W[i - 15];
1172
+ const W2 = SHA256_W[i - 2];
1173
+ const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ W15 >>> 3;
1174
+ const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ W2 >>> 10;
1175
+ SHA256_W[i] = s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16] | 0;
1176
+ }
1177
+ let { A, B, C, D, E, F, G, H } = this;
1178
+ for (let i = 0; i < 64; i++) {
1179
+ const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);
1180
+ const T1 = H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i] | 0;
1181
+ const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);
1182
+ const T2 = sigma0 + Maj(A, B, C) | 0;
1183
+ H = G;
1184
+ G = F;
1185
+ F = E;
1186
+ E = D + T1 | 0;
1187
+ D = C;
1188
+ C = B;
1189
+ B = A;
1190
+ A = T1 + T2 | 0;
1191
+ }
1192
+ A = A + this.A | 0;
1193
+ B = B + this.B | 0;
1194
+ C = C + this.C | 0;
1195
+ D = D + this.D | 0;
1196
+ E = E + this.E | 0;
1197
+ F = F + this.F | 0;
1198
+ G = G + this.G | 0;
1199
+ H = H + this.H | 0;
1200
+ this.set(A, B, C, D, E, F, G, H);
1201
+ }
1202
+ roundClean() {
1203
+ SHA256_W.fill(0);
1204
+ }
1205
+ destroy() {
1206
+ this.set(0, 0, 0, 0, 0, 0, 0, 0);
1207
+ this.buffer.fill(0);
1208
+ }
1209
+ };
1210
+ var sha256 = /* @__PURE__ */ wrapConstructor(() => new SHA256());
1211
+
1212
+ // src/request/types/permissions/resources/account.ts
1213
+ var v16 = __toESM(require("valibot"));
1214
+
1215
+ // src/request/types/permissions/resources/common.ts
1216
+ var v14 = __toESM(require("valibot"));
1217
+ var actionDescriptionSchema = v14.object({
1218
+ name: v14.string(),
1219
+ description: v14.variant("type", [
1220
+ v14.object({ type: v14.literal("single"), value: v14.string() }),
1221
+ v14.object({ type: v14.literal("multiple"), values: v14.array(v14.string()) })
1222
+ ])
1223
+ });
1224
+
1225
+ // src/request/types/permissions/utils/account-id.ts
1226
+ var v15 = __toESM(require("valibot"));
1227
+ var accountIdBrandName = "AccountId";
1228
+ var accountIdSchema = v15.pipe(v15.string(), v15.brand(accountIdBrandName));
1229
+ function makeAccountId(options) {
1230
+ return v15.parse(
1231
+ accountIdSchema,
1232
+ bytesToHex(
1233
+ sha256(
1234
+ `account-${options.masterPubKey}-${// NOTE: This "account ID" is actually the ~account~ address index from BIP-44.
1235
+ options.accountId}-${options.networkType}`
1236
+ )
1237
+ )
1238
+ );
1239
+ }
1240
+
1241
+ // src/request/types/permissions/resources/account.ts
1242
+ var accountResourceIdBrandName = "AccountResourceId";
1243
+ var sha256HexStringRegex = /^[\da-f]{64}$/;
1244
+ var accountResourceIdSchema = v16.pipe(
1245
+ v16.string(),
1246
+ v16.check((input) => sha256HexStringRegex.test(input)),
1247
+ v16.brand("AccountResourceId")
1248
+ );
1249
+ function makeAccountResourceId(accountId) {
1250
+ return v16.parse(accountResourceIdSchema, bytesToHex(sha256(`account-resource-${accountId}`)));
1251
+ }
1252
+ var accountResourceSchema = v16.object({
1253
+ type: v16.literal("account"),
1254
+ id: accountResourceIdSchema,
1255
+ accountId: accountIdSchema,
1256
+ name: v16.string()
1257
+ });
1258
+ function makeAccountResource(args) {
1259
+ return {
1260
+ type: "account",
1261
+ id: makeAccountResourceId(args.accountId),
1262
+ accountId: args.accountId,
1263
+ name: `Account ${args.accountId}, ${args.masterPubKey.slice(0, 6)}...(${args.networkType})`
1264
+ };
1265
+ }
1266
+ var accountActionsSchema = v16.object({
1267
+ read: v16.optional(v16.boolean()),
1268
+ autoSign: v16.optional(v16.boolean()),
1269
+ rename: v16.optional(v16.boolean())
1270
+ });
1271
+ var accountActionsDescriptionSchema = v16.record(
1272
+ v16.keyof(accountActionsSchema),
1273
+ actionDescriptionSchema
1274
+ );
1275
+ var accountPermissionSchema = v16.object({
1276
+ type: v16.literal("account"),
1277
+ resourceId: accountResourceIdSchema,
1278
+ clientId: v16.string(),
1279
+ actions: accountActionsSchema
1280
+ });
1281
+
1282
+ // src/request/types/permissions/resources/wallet.ts
1283
+ var v17 = __toESM(require("valibot"));
1284
+ var walletResourceSchema = v17.object({
1285
+ type: v17.literal("wallet"),
1286
+ id: v17.literal("wallet"),
1287
+ name: v17.literal("Wallet")
1288
+ });
1289
+ var walletActionsSchema = v17.object({
1290
+ addPrivateKey: v17.optional(v17.boolean()),
1291
+ openPopup: v17.optional(v17.boolean()),
1292
+ openFullPage: v17.optional(v17.boolean()),
1293
+ readAllAccounts: v17.optional(v17.boolean())
1294
+ });
1295
+ var walletActionsDescriptionSchema = v17.record(
1296
+ v17.keyof(walletActionsSchema),
1297
+ actionDescriptionSchema
1298
+ );
1299
+ var walletIdSchema = v17.literal("wallet");
1300
+ var walletPermissionSchema = v17.object({
1301
+ type: v17.literal("wallet"),
1302
+ resourceId: walletIdSchema,
1303
+ clientId: v17.string(),
1304
+ actions: walletActionsSchema
1305
+ });
1306
+
1307
+ // src/request/types/permissions/resources/index.ts
1308
+ var account = {
1309
+ accountResourceIdBrandName,
1310
+ accountResourceIdSchema,
1311
+ accountResourceSchema,
1312
+ accountActionsSchema,
1313
+ accountActionsDescriptionSchema,
1314
+ accountPermissionSchema,
1315
+ makeAccountResourceId,
1316
+ makeAccountResource
1317
+ };
1318
+ var common = {
1319
+ actionDescriptionSchema
1320
+ };
1321
+ var wallet = {
1322
+ walletResourceSchema,
1323
+ walletActionsSchema,
1324
+ walletIdSchema,
1325
+ walletPermissionSchema,
1326
+ walletActionsDescriptionSchema
1327
+ };
1328
+
1329
+ // src/request/types/permissions/utils/index.ts
1330
+ var account2 = {
1331
+ makeAccountId,
1332
+ accountIdBrandName,
1333
+ accountIdSchema
1334
+ };
1335
+
1336
+ // src/request/types/permissions/store.ts
1337
+ var v18 = __toESM(require("valibot"));
1338
+ var clientId = v18.pipe(v18.string(), v18.url(), v18.brand("ClientId"));
1339
+ var client = v18.object({
1340
+ id: clientId,
1341
+ origin: v18.string(),
1342
+ name: v18.optional(v18.string()),
1343
+ description: v18.optional(v18.string())
1344
+ });
1345
+ var clientsTable = v18.array(client);
1346
+ var clientMetadata = v18.object({
1347
+ clientId: client.entries.id,
1348
+ lastUsed: v18.optional(v18.number())
1349
+ });
1350
+ var clientMetadataTable = v18.array(clientMetadata);
1351
+ var resource = v18.variant("type", [accountResourceSchema, walletResourceSchema]);
1352
+ var resourcesTable = v18.array(resource);
1353
+ var permission = v18.variant("type", [accountPermissionSchema, walletPermissionSchema]);
1354
+ var permissionsTable = v18.array(permission);
1355
+ var permissionsStore = v18.object({
1356
+ version: v18.literal(4),
1357
+ clients: clientsTable,
1358
+ clientMetadata: clientMetadataTable,
1359
+ resources: resourcesTable,
1360
+ permissions: permissionsTable
1361
+ });
1362
+
1363
+ // src/request/types/permissions/index.ts
1364
+ var resources = {
1365
+ account,
1366
+ common,
1367
+ wallet
1368
+ };
1369
+ var utils = {
1370
+ account: account2
1371
+ };
1372
+ var store = {
1373
+ clientId,
1374
+ client,
1375
+ clientMetadata,
1376
+ clientMetadataTable,
1377
+ clientsTable,
1378
+ resource,
1379
+ resourcesTable,
1380
+ permission,
1381
+ permissionsTable,
1382
+ permissionsStore
1383
+ };
1384
+ var permissions = {
1385
+ resources,
1386
+ utils,
1387
+ store
1388
+ };
1389
+
1390
+ // src/request/types/walletMethods.ts
1391
+ var permissionTemplate = v19.variant("type", [
1392
+ v19.object({
1393
+ ...v19.omit(permissions.resources.account.accountPermissionSchema, ["clientId"]).entries
1394
+ }),
1395
+ v19.object({
1396
+ ...v19.omit(permissions.resources.wallet.walletPermissionSchema, ["clientId"]).entries
1397
+ })
1398
+ ]);
1399
+ var requestPermissionsMethodName = "wallet_requestPermissions";
1400
+ var requestPermissionsParamsSchema = v19.nullish(v19.array(permissionTemplate));
1401
+ var requestPermissionsResultSchema = v19.literal(true);
1402
+ var requestPermissionsRequestMessageSchema = v19.object({
1403
+ ...rpcRequestMessageSchema.entries,
1404
+ ...v19.object({
1405
+ method: v19.literal(requestPermissionsMethodName),
1406
+ params: requestPermissionsParamsSchema,
1407
+ id: v19.string()
1408
+ }).entries
1409
+ });
1410
+ var renouncePermissionsMethodName = "wallet_renouncePermissions";
1411
+ var renouncePermissionsParamsSchema = v19.nullish(v19.null());
1412
+ var renouncePermissionsResultSchema = v19.nullish(v19.null());
1413
+ var renouncePermissionsRequestMessageSchema = v19.object({
1414
+ ...rpcRequestMessageSchema.entries,
1415
+ ...v19.object({
1416
+ method: v19.literal(renouncePermissionsMethodName),
1417
+ params: renouncePermissionsParamsSchema,
1418
+ id: v19.string()
1419
+ }).entries
1420
+ });
1421
+ var disconnectMethodName = "wallet_disconnect";
1422
+ var disconnectParamsSchema = v19.nullish(v19.null());
1423
+ var disconnectResultSchema = v19.nullish(v19.null());
1424
+ var disconnectRequestMessageSchema = v19.object({
1425
+ ...rpcRequestMessageSchema.entries,
1426
+ ...v19.object({
1427
+ method: v19.literal(disconnectMethodName),
1428
+ params: disconnectParamsSchema,
1429
+ id: v19.string()
1430
+ }).entries
1431
+ });
1432
+ var getWalletTypeMethodName = "wallet_getWalletType";
1433
+ var getWalletTypeParamsSchema = v19.nullish(v19.null());
1434
+ var getWalletTypeResultSchema = walletTypeSchema;
1435
+ var getWalletTypeRequestMessageSchema = v19.object({
1436
+ ...rpcRequestMessageSchema.entries,
1437
+ ...v19.object({
1438
+ method: v19.literal(getWalletTypeMethodName),
1439
+ params: getWalletTypeParamsSchema,
1440
+ id: v19.string()
1441
+ }).entries
1442
+ });
1443
+ var getCurrentPermissionsMethodName = "wallet_getCurrentPermissions";
1444
+ var getCurrentPermissionsParamsSchema = v19.nullish(v19.null());
1445
+ var getCurrentPermissionsResultSchema = v19.array(permissions.store.permission);
1446
+ var getCurrentPermissionsRequestMessageSchema = v19.object({
1447
+ ...rpcRequestMessageSchema.entries,
1448
+ ...v19.object({
1449
+ method: v19.literal(getCurrentPermissionsMethodName),
1450
+ params: getCurrentPermissionsParamsSchema,
1451
+ id: v19.string()
1452
+ }).entries
1453
+ });
1454
+ var getAccountMethodName = "wallet_getAccount";
1455
+ var getAccountParamsSchema = v19.nullish(v19.null());
1456
+ var getAccountResultSchema = v19.object({
1457
+ id: permissions.utils.account.accountIdSchema,
1458
+ addresses: v19.array(addressSchema),
1459
+ walletType: walletTypeSchema
1460
+ });
1461
+ var getAccountRequestMessageSchema = v19.object({
1462
+ ...rpcRequestMessageSchema.entries,
1463
+ ...v19.object({
1464
+ method: v19.literal(getAccountMethodName),
1465
+ params: getAccountParamsSchema,
1466
+ id: v19.string()
1467
+ }).entries
1468
+ });
1469
+ var connectMethodName = "wallet_connect";
1470
+ var connectParamsSchema = v19.nullish(
1471
+ v19.object({
1472
+ permissions: v19.optional(v19.array(permissionTemplate)),
1473
+ addresses: v19.optional(v19.array(v19.enum(AddressPurpose))),
1474
+ message: v19.optional(
1475
+ v19.pipe(v19.string(), v19.maxLength(80, "The message must not exceed 80 characters."))
1476
+ )
1477
+ })
1478
+ );
1479
+ var connectResultSchema = getAccountResultSchema;
1480
+ var connectRequestMessageSchema = v19.object({
1481
+ ...rpcRequestMessageSchema.entries,
1482
+ ...v19.object({
1483
+ method: v19.literal(connectMethodName),
1484
+ params: connectParamsSchema,
1485
+ id: v19.string()
1486
+ }).entries
1487
+ });
1488
+
1489
+ // src/request/types/runesMethods/etch.ts
1490
+ var v20 = __toESM(require("valibot"));
1491
+ var runesEtchMethodName = "runes_etch";
1492
+ var etchTermsSchema = v20.object({
1493
+ amount: v20.string(),
1494
+ cap: v20.string(),
1495
+ heightStart: v20.optional(v20.string()),
1496
+ heightEnd: v20.optional(v20.string()),
1497
+ offsetStart: v20.optional(v20.string()),
1498
+ offsetEnd: v20.optional(v20.string())
1499
+ });
1500
+ var inscriptionDetailsSchema = v20.object({
1501
+ contentType: v20.string(),
1502
+ contentBase64: v20.string()
1503
+ });
1504
+ var runesEtchParamsSchema = v20.object({
1505
+ runeName: v20.string(),
1506
+ divisibility: v20.optional(v20.number()),
1507
+ symbol: v20.optional(v20.string()),
1508
+ premine: v20.optional(v20.string()),
1509
+ isMintable: v20.boolean(),
1510
+ delegateInscriptionId: v20.optional(v20.string()),
1511
+ destinationAddress: v20.string(),
1512
+ refundAddress: v20.string(),
1513
+ feeRate: v20.number(),
1514
+ appServiceFee: v20.optional(v20.number()),
1515
+ appServiceFeeAddress: v20.optional(v20.string()),
1516
+ terms: v20.optional(etchTermsSchema),
1517
+ inscriptionDetails: v20.optional(inscriptionDetailsSchema),
1518
+ network: v20.optional(v20.enum(BitcoinNetworkType))
1519
+ });
1520
+ var runesEtchResultSchema = v20.object({
1521
+ orderId: v20.string(),
1522
+ fundTransactionId: v20.string(),
1523
+ fundingAddress: v20.string()
1524
+ });
1525
+ var runesEtchRequestMessageSchema = v20.object({
1526
+ ...rpcRequestMessageSchema.entries,
1527
+ ...v20.object({
1528
+ method: v20.literal(runesEtchMethodName),
1529
+ params: runesEtchParamsSchema,
1530
+ id: v20.string()
1531
+ }).entries
1532
+ });
1533
+
1534
+ // src/request/types/runesMethods/getBalance.ts
1535
+ var v21 = __toESM(require("valibot"));
1536
+ var runesGetBalanceMethodName = "runes_getBalance";
1537
+ var runesGetBalanceParamsSchema = v21.nullish(v21.null());
1538
+ var runesGetBalanceResultSchema = v21.object({
1539
+ balances: v21.array(
1540
+ v21.object({
1541
+ runeName: v21.string(),
1542
+ amount: v21.string(),
1543
+ divisibility: v21.number(),
1544
+ symbol: v21.string(),
1545
+ inscriptionId: v21.nullish(v21.string())
1546
+ })
1547
+ )
1548
+ });
1549
+ var runesGetBalanceRequestMessageSchema = v21.object({
1550
+ ...rpcRequestMessageSchema.entries,
1551
+ ...v21.object({
1552
+ method: v21.literal(runesGetBalanceMethodName),
1553
+ params: runesGetBalanceParamsSchema,
1554
+ id: v21.string()
1555
+ }).entries
1556
+ });
1557
+
1558
+ // src/request/types/runesMethods/mint.ts
1559
+ var v22 = __toESM(require("valibot"));
1560
+ var runesMintMethodName = "runes_mint";
1561
+ var runesMintParamsSchema = v22.object({
1562
+ appServiceFee: v22.optional(v22.number()),
1563
+ appServiceFeeAddress: v22.optional(v22.string()),
1564
+ destinationAddress: v22.string(),
1565
+ feeRate: v22.number(),
1566
+ refundAddress: v22.string(),
1567
+ repeats: v22.number(),
1568
+ runeName: v22.string(),
1569
+ network: v22.optional(v22.enum(BitcoinNetworkType))
1570
+ });
1571
+ var runesMintResultSchema = v22.object({
1572
+ orderId: v22.string(),
1573
+ fundTransactionId: v22.string(),
1574
+ fundingAddress: v22.string()
1575
+ });
1576
+ var runesMintRequestMessageSchema = v22.object({
1577
+ ...rpcRequestMessageSchema.entries,
1578
+ ...v22.object({
1579
+ method: v22.literal(runesMintMethodName),
1580
+ params: runesMintParamsSchema,
1581
+ id: v22.string()
1582
+ }).entries
1583
+ });
1584
+
1585
+ // src/request/types/runesMethods/transfer.ts
1586
+ var v23 = __toESM(require("valibot"));
1587
+ var runesTransferMethodName = "runes_transfer";
1588
+ var runesTransferParamsSchema = v23.object({
1589
+ recipients: v23.array(
1590
+ v23.object({
1591
+ runeName: v23.string(),
1592
+ amount: v23.string(),
1593
+ address: v23.string()
1594
+ })
1595
+ )
1596
+ });
1597
+ var runesTransferResultSchema = v23.object({
1598
+ txid: v23.string()
1599
+ });
1600
+ var runesTransferRequestMessageSchema = v23.object({
1601
+ ...rpcRequestMessageSchema.entries,
1602
+ ...v23.object({
1603
+ method: v23.literal(runesTransferMethodName),
1604
+ params: runesTransferParamsSchema,
1605
+ id: v23.string()
1606
+ }).entries
1607
+ });
1608
+
1609
+ // src/request/types/ordinalsMethods.ts
1610
+ var v24 = __toESM(require("valibot"));
1611
+ var getInscriptionsMethodName = "ord_getInscriptions";
1612
+ var getInscriptionsParamsSchema = v24.object({
1613
+ offset: v24.number(),
1614
+ limit: v24.number()
1615
+ });
1616
+ var getInscriptionsResultSchema = v24.object({
1617
+ total: v24.number(),
1618
+ limit: v24.number(),
1619
+ offset: v24.number(),
1620
+ inscriptions: v24.array(
1621
+ v24.object({
1622
+ inscriptionId: v24.string(),
1623
+ inscriptionNumber: v24.string(),
1624
+ address: v24.string(),
1625
+ collectionName: v24.optional(v24.string()),
1626
+ postage: v24.string(),
1627
+ contentLength: v24.string(),
1628
+ contentType: v24.string(),
1629
+ timestamp: v24.number(),
1630
+ offset: v24.number(),
1631
+ genesisTransaction: v24.string(),
1632
+ output: v24.string()
1633
+ })
1634
+ )
1635
+ });
1636
+ var getInscriptionsRequestMessageSchema = v24.object({
1637
+ ...rpcRequestMessageSchema.entries,
1638
+ ...v24.object({
1639
+ method: v24.literal(getInscriptionsMethodName),
1640
+ params: getInscriptionsParamsSchema,
1641
+ id: v24.string()
1642
+ }).entries
1643
+ });
1644
+ var sendInscriptionsMethodName = "ord_sendInscriptions";
1645
+ var sendInscriptionsParamsSchema = v24.object({
1646
+ transfers: v24.array(
1647
+ v24.object({
1648
+ address: v24.string(),
1649
+ inscriptionId: v24.string()
1650
+ })
1651
+ )
1652
+ });
1653
+ var sendInscriptionsResultSchema = v24.object({
1654
+ txid: v24.string()
1655
+ });
1656
+ var sendInscriptionsRequestMessageSchema = v24.object({
1657
+ ...rpcRequestMessageSchema.entries,
1658
+ ...v24.object({
1659
+ method: v24.literal(sendInscriptionsMethodName),
1660
+ params: sendInscriptionsParamsSchema,
1661
+ id: v24.string()
1662
+ }).entries
1663
+ });
1664
+
1665
+ // src/request/index.ts
1666
+ var request = async (method, params, providerId) => {
1667
+ let provider = window.XverseProviders?.BitcoinProvider || window.BitcoinProvider;
1668
+ if (providerId) {
1669
+ provider = await getProviderById(providerId);
1670
+ }
1671
+ if (!provider) {
1672
+ throw new Error("no wallet provider was found");
1673
+ }
1674
+ if (!method) {
1675
+ throw new Error("A wallet method is required");
1676
+ }
1677
+ const response = await provider.request(method, params);
1678
+ if (v25.is(rpcErrorResponseMessageSchema, response)) {
1679
+ return {
1680
+ status: "error",
1681
+ error: response.error
1682
+ };
1683
+ }
1684
+ if (v25.is(rpcSuccessResponseMessageSchema, response)) {
1685
+ return {
1686
+ status: "success",
1687
+ result: response.result
1688
+ };
1689
+ }
1690
+ return {
1691
+ status: "error",
1692
+ error: {
1693
+ code: -32603 /* INTERNAL_ERROR */,
1694
+ message: "Received unknown response from provider.",
1695
+ data: response
1696
+ }
1697
+ };
1698
+ };
1699
+ var addListener = (event, cb, providerId) => {
1700
+ let provider = window.XverseProviders?.BitcoinProvider || window.BitcoinProvider;
1701
+ if (providerId) {
1702
+ provider = getProviderById(providerId);
1703
+ }
1704
+ if (!provider) {
1705
+ throw new Error("no wallet provider was found");
1706
+ }
1707
+ if (!provider.addListener) {
1708
+ console.error(
1709
+ `The wallet provider you are using does not support the addListener method. Please update your wallet provider.`
1710
+ );
1711
+ return () => {
1712
+ };
1713
+ }
1714
+ return provider.addListener(event, cb);
1715
+ };
1716
+
1717
+ // src/runes/api.ts
1718
+ var import_axios = __toESM(require("axios"));
1719
+ var urlNetworkSuffix = {
1720
+ ["Mainnet" /* Mainnet */]: "",
1721
+ ["Testnet" /* Testnet */]: "-testnet",
1722
+ ["Signet" /* Signet */]: "-signet"
1723
+ };
1724
+ var ORDINALS_API_BASE_URL = (network = "Mainnet" /* Mainnet */) => `https://ordinals${urlNetworkSuffix[network]}.xverse.app/v1`;
1725
+ var RunesApi = class {
1726
+ client;
1727
+ constructor(network) {
1728
+ this.client = import_axios.default.create({
1729
+ baseURL: ORDINALS_API_BASE_URL(network)
1730
+ });
1731
+ }
1732
+ parseError = (error) => {
1733
+ return {
1734
+ code: error.response?.status,
1735
+ message: JSON.stringify(error.response?.data)
1736
+ };
1737
+ };
1738
+ estimateMintCost = async (mintParams) => {
1739
+ try {
1740
+ const response = await this.client.post("/runes/mint/estimate", {
1741
+ ...mintParams
1742
+ });
1743
+ return {
1744
+ data: response.data
1745
+ };
1746
+ } catch (error) {
1747
+ const err = error;
1748
+ return {
1749
+ error: this.parseError(err)
1750
+ };
1751
+ }
1752
+ };
1753
+ estimateEtchCost = async (etchParams) => {
1754
+ try {
1755
+ const response = await this.client.post("/runes/etch/estimate", {
1756
+ ...etchParams
1757
+ });
1758
+ return {
1759
+ data: response.data
1760
+ };
1761
+ } catch (error) {
1762
+ const err = error;
1763
+ return {
1764
+ error: this.parseError(err)
1765
+ };
1766
+ }
1767
+ };
1768
+ createMintOrder = async (mintOrderParams) => {
1769
+ try {
1770
+ const response = await this.client.post("/runes/mint/orders", {
1771
+ ...mintOrderParams
1772
+ });
1773
+ return {
1774
+ data: response.data
1775
+ };
1776
+ } catch (error) {
1777
+ const err = error;
1778
+ return {
1779
+ error: this.parseError(err)
1780
+ };
1781
+ }
1782
+ };
1783
+ createEtchOrder = async (etchOrderParams) => {
1784
+ try {
1785
+ const response = await this.client.post("/runes/etch/orders", {
1786
+ ...etchOrderParams
1787
+ });
1788
+ return {
1789
+ data: response.data
1790
+ };
1791
+ } catch (error) {
1792
+ const err = error;
1793
+ return {
1794
+ error: this.parseError(err)
1795
+ };
1796
+ }
1797
+ };
1798
+ executeMint = async (orderId, fundTransactionId) => {
1799
+ try {
1800
+ const response = await this.client.post(`/runes/mint/orders/${orderId}/execute`, {
1801
+ fundTransactionId
1802
+ });
1803
+ return {
1804
+ data: response.data
1805
+ };
1806
+ } catch (error) {
1807
+ const err = error;
1808
+ return {
1809
+ error: this.parseError(err)
1810
+ };
1811
+ }
1812
+ };
1813
+ executeEtch = async (orderId, fundTransactionId) => {
1814
+ try {
1815
+ const response = await this.client.post(`/runes/etch/orders/${orderId}/execute`, {
1816
+ fundTransactionId
1817
+ });
1818
+ return {
1819
+ data: response.data
1820
+ };
1821
+ } catch (error) {
1822
+ const err = error;
1823
+ return {
1824
+ error: this.parseError(err)
1825
+ };
1826
+ }
1827
+ };
1828
+ getOrder = async (orderId) => {
1829
+ try {
1830
+ const response = await this.client.get(`/orders/${orderId}`);
1831
+ return {
1832
+ data: response.data
1833
+ };
1834
+ } catch (error) {
1835
+ const err = error;
1836
+ return {
1837
+ error: this.parseError(err)
1838
+ };
1839
+ }
1840
+ };
1841
+ rbfOrder = async (rbfRequest) => {
1842
+ const { orderId, newFeeRate } = rbfRequest;
1843
+ try {
1844
+ const response = await this.client.post(`/orders/${orderId}/rbf-estimate`, {
1845
+ newFeeRate
1846
+ });
1847
+ return {
1848
+ data: response.data
1849
+ };
1850
+ } catch (error) {
1851
+ const err = error;
1852
+ return {
1853
+ error: this.parseError(err)
1854
+ };
1855
+ }
1856
+ };
1857
+ };
1858
+ var clients = {};
1859
+ var getRunesApiClient = (network = "Mainnet" /* Mainnet */) => {
1860
+ if (!clients[network]) {
1861
+ clients[network] = new RunesApi(network);
1862
+ }
1863
+ return clients[network];
1864
+ };
1865
+
1866
+ // src/adapters/satsConnectAdapter.ts
1867
+ var SatsConnectAdapter = class {
1868
+ async mintRunes(params) {
1869
+ try {
1870
+ const walletInfo = await this.requestInternal("getInfo", null).catch(() => null);
1871
+ if (walletInfo && walletInfo.status === "success") {
1872
+ const isMintSupported = walletInfo.result.methods?.includes("runes_mint");
1873
+ if (isMintSupported) {
1874
+ const response = await this.requestInternal("runes_mint", params);
1875
+ if (response) {
1876
+ if (response.status === "success") {
1877
+ return response;
1878
+ }
1879
+ if (response.status === "error" && response.error.code !== -32601 /* METHOD_NOT_FOUND */) {
1880
+ return response;
1881
+ }
1882
+ }
1883
+ }
1884
+ }
1885
+ const mintRequest = {
1886
+ destinationAddress: params.destinationAddress,
1887
+ feeRate: params.feeRate,
1888
+ refundAddress: params.refundAddress,
1889
+ repeats: params.repeats,
1890
+ runeName: params.runeName,
1891
+ appServiceFee: params.appServiceFee,
1892
+ appServiceFeeAddress: params.appServiceFeeAddress
1893
+ };
1894
+ const orderResponse = await new RunesApi(params.network).createMintOrder(mintRequest);
1895
+ if (!orderResponse.data) {
1896
+ return {
1897
+ status: "error",
1898
+ error: {
1899
+ code: orderResponse.error.code === 400 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
1900
+ message: orderResponse.error.message
1901
+ }
1902
+ };
1903
+ }
1904
+ const paymentResponse = await this.requestInternal("sendTransfer", {
1905
+ recipients: [
1906
+ {
1907
+ address: orderResponse.data.fundAddress,
1908
+ amount: orderResponse.data.fundAmount
1909
+ }
1910
+ ]
1911
+ });
1912
+ if (paymentResponse.status !== "success") {
1913
+ return paymentResponse;
1914
+ }
1915
+ await new RunesApi(params.network).executeMint(
1916
+ orderResponse.data.orderId,
1917
+ paymentResponse.result.txid
1918
+ );
1919
+ return {
1920
+ status: "success",
1921
+ result: {
1922
+ orderId: orderResponse.data.orderId,
1923
+ fundTransactionId: paymentResponse.result.txid,
1924
+ fundingAddress: orderResponse.data.fundAddress
1925
+ }
1926
+ };
1927
+ } catch (error) {
1928
+ return {
1929
+ status: "error",
1930
+ error: {
1931
+ code: -32603 /* INTERNAL_ERROR */,
1932
+ message: error.message
1933
+ }
1934
+ };
1935
+ }
1936
+ }
1937
+ async etchRunes(params) {
1938
+ const etchRequest = {
1939
+ destinationAddress: params.destinationAddress,
1940
+ refundAddress: params.refundAddress,
1941
+ feeRate: params.feeRate,
1942
+ runeName: params.runeName,
1943
+ divisibility: params.divisibility,
1944
+ symbol: params.symbol,
1945
+ premine: params.premine,
1946
+ isMintable: params.isMintable,
1947
+ terms: params.terms,
1948
+ inscriptionDetails: params.inscriptionDetails,
1949
+ delegateInscriptionId: params.delegateInscriptionId,
1950
+ appServiceFee: params.appServiceFee,
1951
+ appServiceFeeAddress: params.appServiceFeeAddress
1952
+ };
1953
+ try {
1954
+ const walletInfo = await this.requestInternal("getInfo", null).catch(() => null);
1955
+ if (walletInfo && walletInfo.status === "success") {
1956
+ const isEtchSupported = walletInfo.result.methods?.includes("runes_etch");
1957
+ if (isEtchSupported) {
1958
+ const response = await this.requestInternal("runes_etch", params);
1959
+ if (response) {
1960
+ if (response.status === "success") {
1961
+ return response;
1962
+ }
1963
+ if (response.status === "error" && response.error.code !== -32601 /* METHOD_NOT_FOUND */) {
1964
+ return response;
1965
+ }
1966
+ }
1967
+ }
1968
+ }
1969
+ const orderResponse = await new RunesApi(params.network).createEtchOrder(etchRequest);
1970
+ if (!orderResponse.data) {
1971
+ return {
1972
+ status: "error",
1973
+ error: {
1974
+ code: orderResponse.error.code === 400 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
1975
+ message: orderResponse.error.message
1976
+ }
1977
+ };
1978
+ }
1979
+ const paymentResponse = await this.requestInternal("sendTransfer", {
1980
+ recipients: [
1981
+ {
1982
+ address: orderResponse.data.fundAddress,
1983
+ amount: orderResponse.data.fundAmount
1984
+ }
1985
+ ]
1986
+ });
1987
+ if (paymentResponse.status !== "success") {
1988
+ return paymentResponse;
1989
+ }
1990
+ await new RunesApi(params.network).executeEtch(
1991
+ orderResponse.data.orderId,
1992
+ paymentResponse.result.txid
1993
+ );
1994
+ return {
1995
+ status: "success",
1996
+ result: {
1997
+ orderId: orderResponse.data.orderId,
1998
+ fundTransactionId: paymentResponse.result.txid,
1999
+ fundingAddress: orderResponse.data.fundAddress
2000
+ }
2001
+ };
2002
+ } catch (error) {
2003
+ return {
2004
+ status: "error",
2005
+ error: {
2006
+ code: -32603 /* INTERNAL_ERROR */,
2007
+ message: error.message
2008
+ }
2009
+ };
2010
+ }
2011
+ }
2012
+ async estimateMint(params) {
2013
+ const estimateMintRequest = {
2014
+ destinationAddress: params.destinationAddress,
2015
+ feeRate: params.feeRate,
2016
+ repeats: params.repeats,
2017
+ runeName: params.runeName,
2018
+ appServiceFee: params.appServiceFee,
2019
+ appServiceFeeAddress: params.appServiceFeeAddress
2020
+ };
2021
+ const response = await getRunesApiClient(
2022
+ params.network
2023
+ ).estimateMintCost(estimateMintRequest);
2024
+ if (response.data) {
2025
+ return {
2026
+ status: "success",
2027
+ result: response.data
2028
+ };
2029
+ }
2030
+ return {
2031
+ status: "error",
2032
+ error: {
2033
+ code: response.error.code === 400 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
2034
+ message: response.error.message
2035
+ }
2036
+ };
2037
+ }
2038
+ async estimateEtch(params) {
2039
+ const estimateEtchRequest = {
2040
+ destinationAddress: params.destinationAddress,
2041
+ feeRate: params.feeRate,
2042
+ runeName: params.runeName,
2043
+ divisibility: params.divisibility,
2044
+ symbol: params.symbol,
2045
+ premine: params.premine,
2046
+ isMintable: params.isMintable,
2047
+ terms: params.terms,
2048
+ inscriptionDetails: params.inscriptionDetails,
2049
+ delegateInscriptionId: params.delegateInscriptionId,
2050
+ appServiceFee: params.appServiceFee,
2051
+ appServiceFeeAddress: params.appServiceFeeAddress
2052
+ };
2053
+ const response = await getRunesApiClient(params.network).estimateEtchCost(estimateEtchRequest);
2054
+ if (response.data) {
2055
+ return {
2056
+ status: "success",
2057
+ result: response.data
2058
+ };
2059
+ }
2060
+ return {
2061
+ status: "error",
2062
+ error: {
2063
+ code: response.error.code === 400 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
2064
+ message: response.error.message
2065
+ }
2066
+ };
2067
+ }
2068
+ async getOrder(params) {
2069
+ const response = await getRunesApiClient(params.network).getOrder(params.id);
2070
+ if (response.data) {
2071
+ return {
2072
+ status: "success",
2073
+ result: response.data
2074
+ };
2075
+ }
2076
+ return {
2077
+ status: "error",
2078
+ error: {
2079
+ code: response.error.code === 400 || response.error.code === 404 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
2080
+ message: response.error.message
2081
+ }
2082
+ };
2083
+ }
2084
+ async estimateRbfOrder(params) {
2085
+ const rbfOrderRequest = {
2086
+ newFeeRate: params.newFeeRate,
2087
+ orderId: params.orderId
2088
+ };
2089
+ const response = await getRunesApiClient(params.network).rbfOrder(rbfOrderRequest);
2090
+ if (response.data) {
2091
+ return {
2092
+ status: "success",
2093
+ result: {
2094
+ fundingAddress: response.data.fundingAddress,
2095
+ rbfCost: response.data.rbfCost
2096
+ }
2097
+ };
2098
+ }
2099
+ return {
2100
+ status: "error",
2101
+ error: {
2102
+ code: response.error.code === 400 || response.error.code === 404 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
2103
+ message: response.error.message
2104
+ }
2105
+ };
2106
+ }
2107
+ async rbfOrder(params) {
2108
+ try {
2109
+ const rbfOrderRequest = {
2110
+ newFeeRate: params.newFeeRate,
2111
+ orderId: params.orderId
2112
+ };
2113
+ const orderResponse = await getRunesApiClient(params.network).rbfOrder(rbfOrderRequest);
2114
+ if (!orderResponse.data) {
2115
+ return {
2116
+ status: "error",
2117
+ error: {
2118
+ code: orderResponse.error.code === 400 || orderResponse.error.code === 404 ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */,
2119
+ message: orderResponse.error.message
2120
+ }
2121
+ };
2122
+ }
2123
+ const paymentResponse = await this.requestInternal("sendTransfer", {
2124
+ recipients: [
2125
+ {
2126
+ address: orderResponse.data.fundingAddress,
2127
+ amount: orderResponse.data.rbfCost
2128
+ }
2129
+ ]
2130
+ });
2131
+ if (paymentResponse.status !== "success") {
2132
+ return paymentResponse;
2133
+ }
2134
+ return {
2135
+ status: "success",
2136
+ result: {
2137
+ fundingAddress: orderResponse.data.fundingAddress,
2138
+ orderId: rbfOrderRequest.orderId,
2139
+ fundRBFTransactionId: paymentResponse.result.txid
2140
+ }
2141
+ };
2142
+ } catch (error) {
2143
+ return {
2144
+ status: "error",
2145
+ error: {
2146
+ code: -32603 /* INTERNAL_ERROR */,
2147
+ message: error.message
2148
+ }
2149
+ };
2150
+ }
2151
+ }
2152
+ async request(method, params) {
2153
+ switch (method) {
2154
+ case "runes_mint":
2155
+ return this.mintRunes(params);
2156
+ case "runes_etch":
2157
+ return this.etchRunes(params);
2158
+ case "runes_estimateMint":
2159
+ return this.estimateMint(params);
2160
+ case "runes_estimateEtch":
2161
+ return this.estimateEtch(params);
2162
+ case "runes_getOrder": {
2163
+ return this.getOrder(params);
2164
+ }
2165
+ case "runes_estimateRbfOrder": {
2166
+ return this.estimateRbfOrder(params);
2167
+ }
2168
+ case "runes_rbfOrder": {
2169
+ return this.rbfOrder(params);
2170
+ }
2171
+ default:
2172
+ return this.requestInternal(method, params);
2173
+ }
2174
+ }
2175
+ };
2176
+
2177
+ // src/adapters/xverse.ts
2178
+ var XverseAdapter = class extends SatsConnectAdapter {
2179
+ id = DefaultAdaptersInfo.xverse.id;
2180
+ requestInternal = async (method, params) => {
2181
+ return request(method, params, this.id);
2182
+ };
2183
+ addListener = (event, cb) => {
2184
+ return addListener(
2185
+ event,
2186
+ // The types of the `addListener` function being called here are not
2187
+ // entirely accurate.
2188
+ cb,
2189
+ this.id
2190
+ );
2191
+ };
2192
+ };
2193
+
2194
+ // src/adapters/unisat.ts
2195
+ var import_bitcoin_address_validation = require("bitcoin-address-validation");
2196
+ var import_buffer = require("buffer");
2197
+ function convertSignInputsToInputType(signInputs) {
2198
+ let result = [];
2199
+ for (let address in signInputs) {
2200
+ let indexes = signInputs[address];
2201
+ for (let index of indexes) {
2202
+ result.push({
2203
+ index,
2204
+ address
2205
+ });
2206
+ }
2207
+ }
2208
+ return result;
2209
+ }
2210
+ var UnisatAdapter = class extends SatsConnectAdapter {
2211
+ id = DefaultAdaptersInfo.unisat.id;
2212
+ async getAccounts(params) {
2213
+ const { purposes } = params;
2214
+ if (purposes.includes("stacks" /* Stacks */)) {
2215
+ throw new Error("Only bitcoin addresses are supported");
2216
+ }
2217
+ const accounts = await window.unisat.requestAccounts();
2218
+ const publicKey = await window.unisat.getPublicKey();
2219
+ const address = accounts[0];
2220
+ const addressType = (0, import_bitcoin_address_validation.getAddressInfo)(accounts[0]).type;
2221
+ const pk = addressType === import_bitcoin_address_validation.AddressType.p2tr ? publicKey.slice(2) : publicKey;
2222
+ const paymentAddress = {
2223
+ address,
2224
+ publicKey: pk,
2225
+ addressType,
2226
+ purpose: "payment" /* Payment */
2227
+ };
2228
+ const ordinalsAddress = {
2229
+ address,
2230
+ publicKey: pk,
2231
+ addressType,
2232
+ purpose: "ordinals" /* Ordinals */
2233
+ };
2234
+ const response = [];
2235
+ if (purposes.includes("payment" /* Payment */)) {
2236
+ response.push({ ...paymentAddress, walletType: "software" });
2237
+ }
2238
+ if (purposes.includes("ordinals" /* Ordinals */)) {
2239
+ response.push({ ...ordinalsAddress, walletType: "software" });
2240
+ }
2241
+ return response;
2242
+ }
2243
+ async signMessage(params) {
2244
+ const { message, address } = params;
2245
+ const addressType = (0, import_bitcoin_address_validation.getAddressInfo)(address).type;
2246
+ const Bip322supportedTypes = [import_bitcoin_address_validation.AddressType.p2wpkh, import_bitcoin_address_validation.AddressType.p2tr];
2247
+ if (Bip322supportedTypes.includes(addressType)) {
2248
+ const response2 = await window.unisat.signMessage(message, "bip322-simple");
2249
+ return {
2250
+ address,
2251
+ messageHash: "",
2252
+ signature: response2,
2253
+ protocol: "BIP322" /* BIP322 */
2254
+ };
2255
+ }
2256
+ const response = await window.unisat.signMessage(message, "ecdsa");
2257
+ return {
2258
+ address,
2259
+ messageHash: "",
2260
+ signature: response,
2261
+ protocol: "ECDSA" /* ECDSA */
2262
+ };
2263
+ }
2264
+ async sendTransfer(params) {
2265
+ const { recipients } = params;
2266
+ if (recipients.length > 1) {
2267
+ throw new Error("Only one recipient is supported by this wallet provider");
2268
+ }
2269
+ const txid = await window.unisat.sendBitcoin(recipients[0].address, recipients[0].amount);
2270
+ return {
2271
+ txid
2272
+ };
2273
+ }
2274
+ async signPsbt(params) {
2275
+ const { psbt, signInputs, broadcast } = params;
2276
+ const psbtHex = import_buffer.Buffer.from(psbt, "base64").toString("hex");
2277
+ const signedPsbt = await window.unisat.signPsbt(psbtHex, {
2278
+ autoFinalized: broadcast,
2279
+ toSignInputs: convertSignInputsToInputType(signInputs)
2280
+ });
2281
+ if (broadcast) {
2282
+ const txid = await window.unisat.pushPsbt(psbtHex);
2283
+ return {
2284
+ psbt: signedPsbt,
2285
+ txid
2286
+ };
2287
+ }
2288
+ return {
2289
+ psbt: psbtHex
2290
+ };
2291
+ }
2292
+ requestInternal = async (method, params) => {
2293
+ try {
2294
+ switch (method) {
2295
+ case "getAccounts": {
2296
+ const response = await this.getAccounts(
2297
+ params
2298
+ );
2299
+ return {
2300
+ status: "success",
2301
+ result: response
2302
+ };
2303
+ }
2304
+ case "sendTransfer": {
2305
+ const response = await this.sendTransfer(params);
2306
+ return {
2307
+ status: "success",
2308
+ result: response
2309
+ };
2310
+ }
2311
+ case "signMessage": {
2312
+ const response = await this.signMessage(params);
2313
+ return {
2314
+ status: "success",
2315
+ result: response
2316
+ };
2317
+ }
2318
+ case "signPsbt": {
2319
+ const response = await this.signPsbt(params);
2320
+ return {
2321
+ status: "success",
2322
+ result: response
2323
+ };
2324
+ }
2325
+ default: {
2326
+ const error = {
2327
+ code: -32001 /* METHOD_NOT_SUPPORTED */,
2328
+ message: "Method not supported by the selected wallet"
2329
+ };
2330
+ console.error("Error calling the method", error);
2331
+ return {
2332
+ status: "error",
2333
+ error
2334
+ };
2335
+ }
2336
+ }
2337
+ } catch (error) {
2338
+ console.error("Error calling the method", error);
2339
+ return {
2340
+ status: "error",
2341
+ error: {
2342
+ code: error.code === 4001 ? -32e3 /* USER_REJECTION */ : -32603 /* INTERNAL_ERROR */,
2343
+ message: error.message ? error.message : "Wallet method call error",
2344
+ data: error
2345
+ }
2346
+ };
2347
+ }
2348
+ };
2349
+ addListener = (eventName, cb) => {
2350
+ switch (eventName) {
2351
+ case "accountChange": {
2352
+ const handler = () => {
2353
+ cb({ type: "accountChange" });
2354
+ };
2355
+ window.unisat.on("accountsChanged", handler);
2356
+ return () => {
2357
+ window.unisat.removeListener("accountsChanged", handler);
2358
+ };
2359
+ }
2360
+ case "networkChange": {
2361
+ const handler = () => {
2362
+ cb({ type: "networkChange" });
2363
+ };
2364
+ window.unisat.on("networkChanged", handler);
2365
+ return () => {
2366
+ window.unisat.removeListener("networkChanged", handler);
2367
+ };
2368
+ }
2369
+ default: {
2370
+ console.error("Event not supported by the selected wallet");
2371
+ return () => {
2372
+ };
2373
+ }
2374
+ }
2375
+ };
2376
+ };
2377
+
2378
+ // src/adapters/BaseAdapter.ts
2379
+ var BaseAdapter = class extends SatsConnectAdapter {
2380
+ id = "";
2381
+ constructor(providerId) {
2382
+ super();
2383
+ this.id = providerId;
2384
+ }
2385
+ requestInternal = async (method, params) => {
2386
+ return request(method, params, this.id);
2387
+ };
2388
+ addListener = (..._args) => {
2389
+ throw new Error("Method not supported for `BaseAdapter`.");
2390
+ };
2391
+ };
2392
+
2393
+ // src/adapters/index.ts
2394
+ var DefaultAdaptersInfo = {
2395
+ xverse: {
2396
+ id: "XverseProviders.BitcoinProvider",
2397
+ name: "Xverse",
2398
+ webUrl: "https://www.xverse.app/",
2399
+ googlePlayStoreUrl: "https://play.google.com/store/apps/details?id=com.secretkeylabs.xverse",
2400
+ iOSAppStoreUrl: "https://apps.apple.com/app/xverse-bitcoin-web3-wallet/id1552272513",
2401
+ chromeWebStoreUrl: "https://chromewebstore.google.com/detail/xverse-wallet/idnnbdplmphpflfnlkomgpfbpcgelopg",
2402
+ icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyIiBoZWlnaHQ9IjEwMiIgdmlld0JveD0iMCAwIDEwMiAxMDIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGlkPSJJY29uX0FydCAoRWRpdCBNZSkiPgo8cmVjdCB3aWR0aD0iMTAyIiBoZWlnaHQ9IjEwMiIgZmlsbD0iIzE4MTgxOCIvPgo8ZyBpZD0iTG9nby9FbWJsZW0iIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8yMF8xMjIzKSI+CjxwYXRoIGlkPSJWZWN0b3IiIGQ9Ik03NC42NTQyIDczLjg4ODNWNjUuMjMxMkM3NC42NTQyIDY0Ljg4OCA3NC41MTc3IDY0LjU2MDYgNzQuMjc0NSA2NC4zMTc0TDM3LjQzOTcgMjcuNDgyNUMzNy4xOTY1IDI3LjIzOTIgMzYuODY5MSAyNy4xMDI4IDM2LjUyNTggMjcuMTAyOEgyNy44NjlDMjcuNDQxNiAyNy4xMDI4IDI3LjA5MzggMjcuNDUwNiAyNy4wOTM4IDI3Ljg3OFYzNS45MjExQzI3LjA5MzggMzYuMjY0NCAyNy4yMzAyIDM2LjU5MTcgMjcuNDczNCAzNi44MzVMNDAuNjk1MiA1MC4wNTY3QzQwLjk5NzUgNTAuMzU5MSA0MC45OTc1IDUwLjg1MDEgNDAuNjk1MiA1MS4xNTI0TDI3LjMyMTEgNjQuNTI2NUMyNy4xNzU2IDY0LjY3MiAyNy4wOTM4IDY0Ljg2OTggMjcuMDkzOCA2NS4wNzQ0VjczLjg4ODNDMjcuMDkzOCA3NC4zMTUzIDI3LjQ0MTYgNzQuNjYzNSAyNy44NjkgNzQuNjYzNUg0Mi4zMzQyQzQyLjc2MTYgNzQuNjYzNSA0My4xMDk0IDc0LjMxNTMgNDMuMTA5NCA3My44ODgzVjY4LjY5NThDNDMuMTA5NCA2OC40OTEyIDQzLjE5MTIgNjguMjkzNSA0My4zMzY4IDY4LjE0NzlMNTAuNTExNCA2MC45NzMzQzUwLjgxMzggNjAuNjcwOSA1MS4zMDQ4IDYwLjY3MDkgNTEuNjA3MiA2MC45NzMzTDY0LjkxOTggNzQuMjg2MUM2NS4xNjMxIDc0LjUyOTMgNjUuNDkwNCA3NC42NjU4IDY1LjgzMzcgNzQuNjY1OEg3My44NzY3Qzc0LjMwNDIgNzQuNjY1OCA3NC42NTE5IDc0LjMxNzYgNzQuNjUxOSA3My44OTA2TDc0LjY1NDIgNzMuODg4M1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGlkPSJWZWN0b3JfMiIgZD0iTTU1LjM1OCAzOC41NjcySDYyLjYwMzFDNjMuMDMyOCAzOC41NjcyIDYzLjM4MjkgMzguOTE3MyA2My4zODI5IDM5LjM0NjlWNDYuNTkyMUM2My4zODI5IDQ3LjI4NzcgNjQuMjI0IDQ3LjYzNTUgNjQuNzE1MSA0Ny4xNDIyTDc0LjY1NDEgMzcuMTg3M0M3NC43OTk0IDM3LjA0MTggNzQuODgxNiAzNi44NDQgNzQuODgxNiAzNi42MzcxVjI3LjkxODlDNzQuODgxNiAyNy40ODkyIDc0LjUzMzQgMjcuMTM5MSA3NC4xMDE3IDI3LjEzOTFMNjUuMjUzOCAyNy4xMjc3QzY1LjA0NyAyNy4xMjc3IDY0Ljg0OTIgMjcuMjA5NiA2NC43MDE0IDI3LjM1NTFMNTQuODA1NiAzNy4yMzVDNTQuMzE0NSAzNy43MjYgNTQuNjYyMyAzOC41NjcyIDU1LjM1NTcgMzguNTY3Mkg1NS4zNThaIiBmaWxsPSIjRUU3QTMwIi8+CjwvZz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMF8xMjIzIj4KPHJlY3Qgd2lkdGg9IjQ3LjgxMjUiIGhlaWdodD0iNDcuODEyNSIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI3LjA5MzggMjcuMDkzOCkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K"
2403
+ },
2404
+ unisat: {
2405
+ id: "unisat",
2406
+ name: "Unisat",
2407
+ webUrl: "https://unisat.io/",
2408
+ icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE4MCAxODAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxODAiIGhlaWdodD0iMTgwIiBmaWxsPSJibGFjayIvPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAwNTBfNDE3MSkiPgo8cGF0aCBkPSJNMTEzLjY2IDI5LjI4OTdMMTQzLjk3IDU5LjMwOTdDMTQ2LjU1IDYxLjg1OTcgMTQ3LjgyIDY0LjQzOTcgMTQ3Ljc4IDY3LjAzOTdDMTQ3Ljc0IDY5LjYzOTcgMTQ2LjYzIDcyLjAwOTcgMTQ0LjQ2IDc0LjE1OTdDMTQyLjE5IDc2LjQwOTcgMTM5Ljc0IDc3LjU0OTcgMTM3LjEyIDc3LjU5OTdDMTM0LjUgNzcuNjM5NyAxMzEuOSA3Ni4zNzk3IDEyOS4zMiA3My44Mjk3TDk4LjMxOTkgNDMuMTI5N0M5NC43OTk5IDM5LjYzOTcgOTEuMzk5OSAzNy4xNjk3IDg4LjEyOTkgMzUuNzE5N0M4NC44NTk5IDM0LjI2OTcgODEuNDE5OSAzNC4wMzk3IDc3LjgxOTkgMzUuMDM5N0M3NC4yMDk5IDM2LjAyOTcgNzAuMzM5OSAzOC41Nzk3IDY2LjE4OTkgNDIuNjc5N0M2MC40Njk5IDQ4LjM0OTcgNTcuNzM5OSA1My42Njk3IDU4LjAxOTkgNTguNjM5N0M1OC4yOTk5IDYzLjYwOTcgNjEuMTM5OSA2OC43Njk3IDY2LjUyOTkgNzQuMDk5N0w5Ny43Nzk5IDEwNS4wNkMxMDAuMzkgMTA3LjY0IDEwMS42NyAxMTAuMjIgMTAxLjYzIDExMi43OEMxMDEuNTkgMTE1LjM1IDEwMC40NyAxMTcuNzIgOTguMjU5OSAxMTkuOTFDOTYuMDU5OSAxMjIuMDkgOTMuNjI5OSAxMjMuMjMgOTAuOTg5OSAxMjMuMzJDODguMzQ5OSAxMjMuNDEgODUuNzE5OSAxMjIuMTYgODMuMTE5OSAxMTkuNThMNTIuODA5OSA4OS41NTk3QzQ3Ljg3OTkgODQuNjc5NyA0NC4zMTk5IDgwLjA1OTcgNDIuMTI5OSA3NS42OTk3QzM5LjkzOTkgNzEuMzM5NyAzOS4xMTk5IDY2LjQwOTcgMzkuNjg5OSA2MC45MDk3QzQwLjE5OTkgNTYuMTk5NyA0MS43MDk5IDUxLjYzOTcgNDQuMjI5OSA0Ny4yMTk3QzQ2LjczOTkgNDIuNzk5NyA1MC4zMzk5IDM4LjI3OTcgNTUuMDA5OSAzMy42NDk3QzYwLjU2OTkgMjguMTM5NyA2NS44Nzk5IDIzLjkxOTcgNzAuOTM5OSAyMC45Nzk3Qzc1Ljk4OTkgMTguMDM5NyA4MC44Nzk5IDE2LjQwOTcgODUuNTk5OSAxNi4wNjk3QzkwLjMyOTkgMTUuNzI5NyA5NC45ODk5IDE2LjY2OTcgOTkuNTk5OSAxOC44ODk3QzEwNC4yMSAyMS4xMDk3IDEwOC44OSAyNC41Njk3IDExMy42NSAyOS4yODk3SDExMy42NloiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8xMDA1MF80MTcxKSIvPgo8cGF0aCBkPSJNNjYuMTA5OSAxNTAuNDJMMzUuODA5OSAxMjAuNEMzMy4yMjk5IDExNy44NCAzMS45NTk5IDExNS4yNyAzMS45OTk5IDExMi42N0MzMi4wMzk5IDExMC4wNyAzMy4xNDk5IDEwNy43IDM1LjMxOTkgMTA1LjU1QzM3LjU4OTkgMTAzLjMgNDAuMDM5OSAxMDIuMTYgNDIuNjU5OSAxMDIuMTFDNDUuMjc5OSAxMDIuMDcgNDcuODc5OSAxMDMuMzIgNTAuNDU5OSAxMDUuODhMODEuNDQ5OSAxMzYuNThDODQuOTc5OSAxNDAuMDcgODguMzY5OSAxNDIuNTQgOTEuNjM5OSAxNDMuOTlDOTQuOTA5OSAxNDUuNDQgOTguMzQ5OSAxNDUuNjYgMTAxLjk2IDE0NC42N0MxMDUuNTcgMTQzLjY4IDEwOS40NCAxNDEuMTMgMTEzLjU5IDEzNy4wMkMxMTkuMzEgMTMxLjM1IDEyMi4wNCAxMjYuMDMgMTIxLjc2IDEyMS4wNkMxMjEuNDggMTE2LjA5IDExOC42NCAxMTAuOTMgMTEzLjI1IDEwNS41OUw5Ni41OTk5IDg5LjI0MDFDOTMuOTg5OSA4Ni42NjAxIDkyLjcwOTkgODQuMDgwMSA5Mi43NDk5IDgxLjUyMDFDOTIuNzg5OSA3OC45NTAxIDkzLjkwOTkgNzYuNTgwMSA5Ni4xMTk5IDc0LjM5MDFDOTguMzE5OSA3Mi4yMTAxIDEwMC43NSA3MS4wNzAxIDEwMy4zOSA3MC45ODAxQzEwNi4wMyA3MC44OTAxIDEwOC42NiA3Mi4xNDAxIDExMS4yNiA3NC43MjAxTDEyNi45NiA5MC4xMzAxQzEzMS44OSA5NS4wMTAxIDEzNS40NSA5OS42MzAxIDEzNy42NCAxMDMuOTlDMTM5LjgzIDEwOC4zNSAxNDAuNjUgMTEzLjI4IDE0MC4wOCAxMTguNzhDMTM5LjU3IDEyMy40OSAxMzguMDYgMTI4LjA1IDEzNS41NCAxMzIuNDdDMTMzLjAzIDEzNi44OSAxMjkuNDMgMTQxLjQxIDEyNC43NiAxNDYuMDRDMTE5LjIgMTUxLjU1IDExMy44OSAxNTUuNzcgMTA4LjgzIDE1OC43MUMxMDMuNzcgMTYxLjY1IDk4Ljg3OTkgMTYzLjI5IDk0LjE0OTkgMTYzLjYzQzg5LjQxOTkgMTYzLjk3IDg0Ljc1OTkgMTYzLjAzIDgwLjE0OTkgMTYwLjgxQzc1LjUzOTkgMTU4LjU5IDcwLjg1OTkgMTU1LjEzIDY2LjA5OTkgMTUwLjQxTDY2LjEwOTkgMTUwLjQyWiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzEwMDUwXzQxNzEpIi8+CjxwYXRoIGQ9Ik04NS4wMDk5IDcyLjk1OTJDOTEuMTU2OCA3Mi45NTkyIDk2LjEzOTkgNjcuOTc2MSA5Ni4xMzk5IDYxLjgyOTJDOTYuMTM5OSA1NS42ODIzIDkxLjE1NjggNTAuNjk5MiA4NS4wMDk5IDUwLjY5OTJDNzguODYzIDUwLjY5OTIgNzMuODc5OSA1NS42ODIzIDczLjg3OTkgNjEuODI5MkM3My44Nzk5IDY3Ljk3NjEgNzguODYzIDcyLjk1OTIgODUuMDA5OSA3Mi45NTkyWiIgZmlsbD0idXJsKCNwYWludDJfcmFkaWFsXzEwMDUwXzQxNzEpIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xMDA1MF80MTcxIiB4MT0iMTM4Ljk4NSIgeTE9IjQ2Ljc3OTUiIHgyPSI0NS4wNTI5IiB5Mj0iODguNTIzMyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMjAxQzFCIi8+CjxzdG9wIG9mZnNldD0iMC4zNiIgc3RvcC1jb2xvcj0iIzc3MzkwRCIvPgo8c3RvcCBvZmZzZXQ9IjAuNjciIHN0b3AtY29sb3I9IiNFQTgxMDEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRjRCODUyIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xMDA1MF80MTcxIiB4MT0iNDMuMzgxMiIgeTE9IjEzNC4xNjciIHgyPSIxNTIuMjMxIiB5Mj0iMTAxLjc3MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMUYxRDFDIi8+CjxzdG9wIG9mZnNldD0iMC4zNyIgc3RvcC1jb2xvcj0iIzc3MzkwRCIvPgo8c3RvcCBvZmZzZXQ9IjAuNjciIHN0b3AtY29sb3I9IiNFQTgxMDEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRjRGQjUyIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQyX3JhZGlhbF8xMDA1MF80MTcxIiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDg1LjAwOTkgNjEuODM5Mikgc2NhbGUoMTEuMTMpIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0Y0Qjg1MiIvPgo8c3RvcCBvZmZzZXQ9IjAuMzMiIHN0b3AtY29sb3I9IiNFQTgxMDEiLz4KPHN0b3Agb2Zmc2V0PSIwLjY0IiBzdG9wLWNvbG9yPSIjNzczOTBEIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzIxMUMxRCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEwMDUwXzQxNzEiPgo8cmVjdCB3aWR0aD0iMTE1Ljc3IiBoZWlnaHQ9IjE0Ny43IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzIgMTYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg=="
2409
+ }
2410
+ };
2411
+ var defaultAdapters = {
2412
+ [DefaultAdaptersInfo.xverse.id]: XverseAdapter,
2413
+ [DefaultAdaptersInfo.unisat.id]: UnisatAdapter
2414
+ };
2415
+
2416
+ // src/capabilities/index.ts
2417
+ var import_jsontokens2 = require("jsontokens");
2418
+ var extractOrValidateCapabilities = (provider, reportedCapabilities) => {
2419
+ const validateCapability = (capability) => {
2420
+ if (!provider[capability]) {
2421
+ return false;
2422
+ }
2423
+ if (reportedCapabilities && !reportedCapabilities.has(capability)) {
2424
+ return false;
2425
+ }
2426
+ return true;
2427
+ };
2428
+ const capabilityMap = {
2429
+ request: validateCapability("request"),
2430
+ connect: validateCapability("connect"),
2431
+ signMessage: validateCapability("signMessage"),
2432
+ signTransaction: validateCapability("signTransaction"),
2433
+ sendBtcTransaction: validateCapability("sendBtcTransaction"),
2434
+ createInscription: validateCapability("createInscription"),
2435
+ createRepeatInscriptions: validateCapability("createRepeatInscriptions"),
2436
+ signMultipleTransactions: validateCapability("signMultipleTransactions"),
2437
+ addListener: validateCapability("addListener")
2438
+ };
2439
+ return Object.entries(capabilityMap).reduce((acc, [capability, value]) => {
2440
+ if (value) return [...acc, capability];
2441
+ return acc;
2442
+ }, []);
2443
+ };
2444
+ var getCapabilities = async (options) => {
2445
+ const provider = await getProviderOrThrow(options.getProvider);
2446
+ const request2 = (0, import_jsontokens2.createUnsecuredToken)(options.payload);
2447
+ if (provider.getCapabilities) {
2448
+ try {
2449
+ const response = await provider.getCapabilities(request2);
2450
+ options.onFinish?.(extractOrValidateCapabilities(provider, new Set(response)));
2451
+ } catch (error) {
2452
+ console.error("[Connect] Error during capabilities request", error);
2453
+ }
2454
+ }
2455
+ try {
2456
+ const inferredCapabilities = extractOrValidateCapabilities(provider);
2457
+ options.onFinish?.(inferredCapabilities);
2458
+ } catch (error) {
2459
+ console.error("[Connect] Error during capabilities request", error);
2460
+ options.onCancel?.();
2461
+ }
2462
+ };
2463
+
2464
+ // src/inscriptions/createInscription.ts
2465
+ var import_jsontokens3 = require("jsontokens");
2466
+
2467
+ // src/inscriptions/utils.ts
2468
+ var MAX_CONTENT_LENGTH_MAINNET = 4e5;
2469
+ var MAX_CONTENT_LENGTH_TESTNET = 6e4;
2470
+ var validateInscriptionPayload = (payload) => {
2471
+ const { contentType, content, payloadType, network, appFeeAddress, appFee } = payload;
2472
+ if (!/^[a-z]+\/[a-z0-9\-\.\+]+(?=;.*|$)/.test(contentType)) {
2473
+ throw new Error("Invalid content type detected");
2474
+ }
2475
+ if (!content || content.length === 0) {
2476
+ throw new Error("Empty content not allowed");
2477
+ }
2478
+ if (!payloadType || payloadType !== "BASE_64" && payloadType !== "PLAIN_TEXT") {
2479
+ throw new Error("Empty invalid payloadType specified");
2480
+ }
2481
+ if (content.length > (network.type === "Mainnet" ? MAX_CONTENT_LENGTH_MAINNET : MAX_CONTENT_LENGTH_TESTNET)) {
2482
+ throw new Error("Content too large");
2483
+ }
2484
+ if ((appFeeAddress?.length ?? 0) > 0 && (appFee ?? 0) <= 0) {
2485
+ throw new Error("Invalid combination of app fee address and fee provided");
2486
+ }
2487
+ };
2488
+
2489
+ // src/inscriptions/createInscription.ts
2490
+ var createInscription = async (options) => {
2491
+ const { getProvider } = options;
2492
+ const provider = await getProviderOrThrow(getProvider);
2493
+ validateInscriptionPayload(options.payload);
2494
+ try {
2495
+ const request2 = (0, import_jsontokens3.createUnsecuredToken)(options.payload);
2496
+ const response = await provider.createInscription(request2);
2497
+ options.onFinish?.(response);
2498
+ } catch (error) {
2499
+ console.error("[Connect] Error during create inscription", error);
2500
+ options.onCancel?.();
2501
+ }
2502
+ };
2503
+
2504
+ // src/inscriptions/createRepeatInscriptions.ts
2505
+ var import_jsontokens4 = require("jsontokens");
2506
+ var createRepeatInscriptions = async (options) => {
2507
+ const { getProvider } = options;
2508
+ const provider = await getProviderOrThrow(getProvider);
2509
+ validateInscriptionPayload(options.payload);
2510
+ try {
2511
+ const request2 = (0, import_jsontokens4.createUnsecuredToken)(options.payload);
2512
+ const response = await provider.createRepeatInscriptions(request2);
2513
+ options.onFinish?.(response);
2514
+ } catch (error) {
2515
+ console.error("[Connect] Error during create repeat inscriptions", error);
2516
+ options.onCancel?.();
2517
+ }
2518
+ };
2519
+
2520
+ // src/messages/index.ts
2521
+ var import_jsontokens5 = require("jsontokens");
2522
+ var signMessage = async (options) => {
2523
+ const provider = await getProviderOrThrow(options.getProvider);
2524
+ const { address, message } = options.payload;
2525
+ if (!address) {
2526
+ throw new Error("An address is required to sign a message");
2527
+ }
2528
+ if (!message) {
2529
+ throw new Error("A message to be signed is required");
2530
+ }
2531
+ try {
2532
+ const request2 = (0, import_jsontokens5.createUnsecuredToken)(options.payload);
2533
+ const response = await provider.signMessage(request2);
2534
+ options.onFinish?.(response);
2535
+ } catch (error) {
2536
+ console.error("[Connect] Error during sign message request", error);
2537
+ options.onCancel?.();
2538
+ }
2539
+ };
2540
+
2541
+ // src/transactions/sendBtcTransaction.ts
2542
+ var import_jsontokens6 = require("jsontokens");
2543
+ var serializer = (recipient) => {
2544
+ return recipient.map((value) => {
2545
+ const { address, amountSats } = value;
2546
+ return {
2547
+ address,
2548
+ amountSats: amountSats.toString()
2549
+ };
2550
+ });
2551
+ };
2552
+ var sendBtcTransaction = async (options) => {
2553
+ const provider = await getProviderOrThrow(options.getProvider);
2554
+ const { recipients, senderAddress, network, message } = options.payload;
2555
+ if (!recipients || recipients.length === 0) {
2556
+ throw new Error("At least one recipient is required");
2557
+ }
2558
+ if (recipients.some(
2559
+ (item) => typeof item.address !== "string" || typeof item.amountSats !== "bigint"
2560
+ )) {
2561
+ throw new Error("Incorrect recipient format");
2562
+ }
2563
+ if (!senderAddress) {
2564
+ throw new Error("The sender address is required");
2565
+ }
2566
+ try {
2567
+ const serializedRecipients = serializer(recipients);
2568
+ const serializedPayload = {
2569
+ network,
2570
+ senderAddress,
2571
+ message,
2572
+ recipients: serializedRecipients
2573
+ };
2574
+ const request2 = (0, import_jsontokens6.createUnsecuredToken)(serializedPayload);
2575
+ const response = await provider.sendBtcTransaction(request2);
2576
+ options.onFinish?.(response);
2577
+ } catch (error) {
2578
+ console.error("[Connect] Error during send BTC transaction request", error);
2579
+ options.onCancel?.();
2580
+ }
2581
+ };
2582
+
2583
+ // src/transactions/signTransaction.ts
2584
+ var import_jsontokens7 = require("jsontokens");
2585
+ var signTransaction = async (options) => {
2586
+ const provider = await getProviderOrThrow(options.getProvider);
2587
+ const { psbtBase64, inputsToSign } = options.payload;
2588
+ if (!psbtBase64) {
2589
+ throw new Error("A value for psbtBase64 representing the tx hash is required");
2590
+ }
2591
+ if (!inputsToSign) {
2592
+ throw new Error("An array specifying the inputs to be signed by the wallet is required");
2593
+ }
2594
+ try {
2595
+ const request2 = (0, import_jsontokens7.createUnsecuredToken)(options.payload);
2596
+ const response = await provider.signTransaction(request2);
2597
+ options.onFinish?.(response);
2598
+ } catch (error) {
2599
+ console.error("[Connect] Error during sign transaction request", error);
2600
+ options.onCancel?.();
2601
+ }
2602
+ };
2603
+
2604
+ // src/transactions/signMultipleTransactions.ts
2605
+ var import_jsontokens8 = require("jsontokens");
2606
+ var signMultipleTransactions = async (options) => {
2607
+ const provider = await getProviderOrThrow(options.getProvider);
2608
+ const { psbts } = options.payload;
2609
+ if (!psbts || !psbts.length) {
2610
+ throw new Error("psbts array is required");
2611
+ }
2612
+ if (psbts.length > 100) {
2613
+ throw new Error("psbts array must contain less than 100 psbts");
2614
+ }
2615
+ try {
2616
+ const request2 = (0, import_jsontokens8.createUnsecuredToken)(options.payload);
2617
+ const response = await provider.signMultipleTransactions(request2);
2618
+ options.onFinish?.(response);
2619
+ } catch (error) {
2620
+ console.error("[Connect] Error during sign Multiple transactions request", error);
2621
+ options.onCancel?.();
2622
+ }
2623
+ };
2624
+ // Annotate the CommonJS export names for ESM import in node:
2625
+ 0 && (module.exports = {
2626
+ AddressPurpose,
2627
+ AddressType,
2628
+ BaseAdapter,
2629
+ BitcoinNetworkType,
2630
+ DefaultAdaptersInfo,
2631
+ MessageSigningProtocols,
2632
+ RpcErrorCode,
2633
+ RpcIdSchema,
2634
+ SatsConnectAdapter,
2635
+ accountChangeEventName,
2636
+ accountChangeSchema,
2637
+ addListener,
2638
+ addressSchema,
2639
+ connectMethodName,
2640
+ connectParamsSchema,
2641
+ connectRequestMessageSchema,
2642
+ connectResultSchema,
2643
+ createInscription,
2644
+ createRepeatInscriptions,
2645
+ defaultAdapters,
2646
+ disconnectEventName,
2647
+ disconnectMethodName,
2648
+ disconnectParamsSchema,
2649
+ disconnectRequestMessageSchema,
2650
+ disconnectResultSchema,
2651
+ disconnectSchema,
2652
+ getAccountMethodName,
2653
+ getAccountParamsSchema,
2654
+ getAccountRequestMessageSchema,
2655
+ getAccountResultSchema,
2656
+ getAccountsMethodName,
2657
+ getAccountsParamsSchema,
2658
+ getAccountsRequestMessageSchema,
2659
+ getAccountsResultSchema,
2660
+ getAddress,
2661
+ getAddressesMethodName,
2662
+ getAddressesParamsSchema,
2663
+ getAddressesRequestMessageSchema,
2664
+ getAddressesResultSchema,
2665
+ getBalanceMethodName,
2666
+ getBalanceParamsSchema,
2667
+ getBalanceRequestMessageSchema,
2668
+ getBalanceResultSchema,
2669
+ getCapabilities,
2670
+ getCurrentPermissionsMethodName,
2671
+ getCurrentPermissionsParamsSchema,
2672
+ getCurrentPermissionsRequestMessageSchema,
2673
+ getCurrentPermissionsResultSchema,
2674
+ getDefaultProvider,
2675
+ getInfoMethodName,
2676
+ getInfoParamsSchema,
2677
+ getInfoRequestMessageSchema,
2678
+ getInfoResultSchema,
2679
+ getInscriptionsMethodName,
2680
+ getInscriptionsParamsSchema,
2681
+ getInscriptionsRequestMessageSchema,
2682
+ getInscriptionsResultSchema,
2683
+ getProviderById,
2684
+ getProviderOrThrow,
2685
+ getProviders,
2686
+ getSupportedWallets,
2687
+ getWalletTypeMethodName,
2688
+ getWalletTypeParamsSchema,
2689
+ getWalletTypeRequestMessageSchema,
2690
+ getWalletTypeResultSchema,
2691
+ isProviderInstalled,
2692
+ networkChangeEventName,
2693
+ networkChangeSchema,
2694
+ permissionTemplate,
2695
+ removeDefaultProvider,
2696
+ renouncePermissionsMethodName,
2697
+ renouncePermissionsParamsSchema,
2698
+ renouncePermissionsRequestMessageSchema,
2699
+ renouncePermissionsResultSchema,
2700
+ request,
2701
+ requestPermissionsMethodName,
2702
+ requestPermissionsParamsSchema,
2703
+ requestPermissionsRequestMessageSchema,
2704
+ requestPermissionsResultSchema,
2705
+ rpcErrorResponseMessageSchema,
2706
+ rpcRequestMessageSchema,
2707
+ rpcResponseMessageSchema,
2708
+ rpcSuccessResponseMessageSchema,
2709
+ runesEtchMethodName,
2710
+ runesEtchParamsSchema,
2711
+ runesEtchRequestMessageSchema,
2712
+ runesEtchResultSchema,
2713
+ runesGetBalanceMethodName,
2714
+ runesGetBalanceParamsSchema,
2715
+ runesGetBalanceRequestMessageSchema,
2716
+ runesGetBalanceResultSchema,
2717
+ runesMintMethodName,
2718
+ runesMintParamsSchema,
2719
+ runesMintRequestMessageSchema,
2720
+ runesMintResultSchema,
2721
+ runesTransferMethodName,
2722
+ runesTransferParamsSchema,
2723
+ runesTransferRequestMessageSchema,
2724
+ runesTransferResultSchema,
2725
+ sendBtcTransaction,
2726
+ sendInscriptionsMethodName,
2727
+ sendInscriptionsParamsSchema,
2728
+ sendInscriptionsRequestMessageSchema,
2729
+ sendInscriptionsResultSchema,
2730
+ sendTransferMethodName,
2731
+ sendTransferParamsSchema,
2732
+ sendTransferRequestMessageSchema,
2733
+ sendTransferResultSchema,
2734
+ setDefaultProvider,
2735
+ signMessage,
2736
+ signMessageMethodName,
2737
+ signMessageParamsSchema,
2738
+ signMessageRequestMessageSchema,
2739
+ signMessageResultSchema,
2740
+ signMultipleTransactions,
2741
+ signPsbtMethodName,
2742
+ signPsbtParamsSchema,
2743
+ signPsbtRequestMessageSchema,
2744
+ signPsbtResultSchema,
2745
+ signTransaction,
2746
+ stxCallContractMethodName,
2747
+ stxCallContractParamsSchema,
2748
+ stxCallContractRequestMessageSchema,
2749
+ stxCallContractResultSchema,
2750
+ stxDeployContractMethodName,
2751
+ stxDeployContractParamsSchema,
2752
+ stxDeployContractRequestMessageSchema,
2753
+ stxDeployContractResultSchema,
2754
+ stxGetAccountsMethodName,
2755
+ stxGetAccountsParamsSchema,
2756
+ stxGetAccountsRequestMessageSchema,
2757
+ stxGetAccountsResultSchema,
2758
+ stxGetAddressesMethodName,
2759
+ stxGetAddressesParamsSchema,
2760
+ stxGetAddressesRequestMessageSchema,
2761
+ stxGetAddressesResultSchema,
2762
+ stxSignMessageMethodName,
2763
+ stxSignMessageParamsSchema,
2764
+ stxSignMessageRequestMessageSchema,
2765
+ stxSignMessageResultSchema,
2766
+ stxSignStructuredMessageMethodName,
2767
+ stxSignStructuredMessageParamsSchema,
2768
+ stxSignStructuredMessageRequestMessageSchema,
2769
+ stxSignStructuredMessageResultSchema,
2770
+ stxSignTransactionMethodName,
2771
+ stxSignTransactionParamsSchema,
2772
+ stxSignTransactionRequestMessageSchema,
2773
+ stxSignTransactionResultSchema,
2774
+ stxTransferStxMethodName,
2775
+ stxTransferStxParamsSchema,
2776
+ stxTransferStxRequestMessageSchema,
2777
+ stxTransferStxResultSchema,
2778
+ walletEventSchema,
2779
+ walletTypeSchema,
2780
+ walletTypes
2781
+ });
2782
+ /*! Bundled license information:
2783
+
2784
+ @noble/hashes/esm/utils.js:
2785
+ (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
2786
+ */