@sats-connect/core 0.4.0-e7d3e8d → 0.4.0-e8e6a66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,6 +1,3 @@
1
- // src/provider/index.ts
2
- import omit from "lodash.omit";
3
-
4
1
  // src/provider/types.ts
5
2
  import * as v from "valibot";
6
3
  var accountChangeEventName = "accountChange";
@@ -50,11 +47,9 @@ function removeDefaultProvider() {
50
47
  localStorage.removeItem("sats-connect_defaultProvider");
51
48
  }
52
49
  function getSupportedWallets() {
53
- const btc_providers = getProviders();
54
- const allProviders = [...btc_providers];
55
- for (const key in omit(DefaultAdaptersInfo, ["xverse"])) {
56
- allProviders.push(DefaultAdaptersInfo[key]);
57
- }
50
+ const ambientProviders = getProviders();
51
+ const { xverse, ...defaultProviders } = DefaultAdaptersInfo;
52
+ const allProviders = [...ambientProviders, ...Object.values(defaultProviders)];
58
53
  const wallets = allProviders.map((provider) => {
59
54
  {
60
55
  return {
@@ -120,6 +115,9 @@ var rpcResponseMessageSchema = v2.union([
120
115
  // src/request/index.ts
121
116
  import * as v10 from "valibot";
122
117
 
118
+ // src/request/types/stxMethods.ts
119
+ import * as v4 from "valibot";
120
+
123
121
  // src/addresses/index.ts
124
122
  import { createUnsecuredToken } from "jsontokens";
125
123
 
@@ -165,7 +163,6 @@ var getAddress = async (options) => {
165
163
  };
166
164
 
167
165
  // src/request/types/stxMethods.ts
168
- import * as v4 from "valibot";
169
166
  var stxGetAddressesMethodName = "stx_getAddresses";
170
167
  var stxGetAddressesParamsSchema = v4.nullish(
171
168
  v4.object({
@@ -325,6 +322,68 @@ var signMessageRequestMessageSchema = v6.object({
325
322
  id: v6.string()
326
323
  }).entries
327
324
  });
325
+ var sendTransferMethodName = "sendTransfer";
326
+ var sendTransferParamsSchema = v6.object({
327
+ /**
328
+ * Array of recipients to send to.
329
+ * The amount to send to each recipient is in satoshis.
330
+ */
331
+ recipients: v6.array(
332
+ v6.object({
333
+ address: v6.string(),
334
+ amount: v6.number()
335
+ })
336
+ )
337
+ });
338
+ var sendTransferResultSchema = v6.object({
339
+ /**
340
+ * The transaction id as a hex-encoded string.
341
+ */
342
+ txid: v6.string()
343
+ });
344
+ var sendTransferRequestMessageSchema = v6.object({
345
+ ...rpcRequestMessageSchema.entries,
346
+ ...v6.object({
347
+ method: v6.literal(sendTransferMethodName),
348
+ params: sendTransferParamsSchema,
349
+ id: v6.string()
350
+ }).entries
351
+ });
352
+ var signPsbtMethodName = "signPsbt";
353
+ var signPsbtParamsSchema = v6.object({
354
+ /**
355
+ * The base64 encoded PSBT to sign.
356
+ */
357
+ psbt: v6.string(),
358
+ /**
359
+ * The inputs to sign.
360
+ * The key is the address and the value is an array of indexes of the inputs to sign.
361
+ */
362
+ signInputs: v6.record(v6.string(), v6.array(v6.number())),
363
+ /**
364
+ * Whether to broadcast the transaction after signing.
365
+ **/
366
+ broadcast: v6.optional(v6.boolean())
367
+ });
368
+ var signPsbtResultSchema = v6.object({
369
+ /**
370
+ * The base64 encoded PSBT after signing.
371
+ */
372
+ psbt: v6.string(),
373
+ /**
374
+ * The transaction id as a hex-encoded string.
375
+ * This is only returned if the transaction was broadcast.
376
+ **/
377
+ txid: v6.optional(v6.string())
378
+ });
379
+ var signPsbtRequestMessageSchema = v6.object({
380
+ ...rpcRequestMessageSchema.entries,
381
+ ...v6.object({
382
+ method: v6.literal(signPsbtMethodName),
383
+ params: signPsbtParamsSchema,
384
+ id: v6.string()
385
+ }).entries
386
+ });
328
387
  var getAccountsMethodName = "getAccounts";
329
388
  var getAccountsParamsSchema = v6.object({
330
389
  /**
@@ -385,8 +444,19 @@ var getBalanceRequestMessageSchema = v6.object({
385
444
 
386
445
  // src/request/types/walletMethods.ts
387
446
  import * as v7 from "valibot";
447
+ import { permissions } from "@secretkeylabs/xverse-core";
448
+ var permissionTemplate = v7.variant("type", [
449
+ v7.object({
450
+ ...v7.omit(permissions.resources.account.accountPermissionSchema, ["clientId", "actions"]).entries,
451
+ actions: v7.partial(permissions.resources.account.accountActionsSchema)
452
+ }),
453
+ v7.object({
454
+ ...v7.omit(permissions.resources.wallet.walletPermissionSchema, ["clientId"]).entries,
455
+ actions: v7.partial(permissions.resources.wallet.walletActionsSchema)
456
+ })
457
+ ]);
388
458
  var requestPermissionsMethodName = "wallet_requestPermissions";
389
- var requestPermissionsParamsSchema = v7.undefined();
459
+ var requestPermissionsParamsSchema = v7.nullish(v7.array(permissionTemplate));
390
460
  var requestPermissionsResultSchema = v7.literal(true);
391
461
  var requestPermissionsRequestMessageSchema = v7.object({
392
462
  ...rpcRequestMessageSchema.entries,
@@ -397,8 +467,8 @@ var requestPermissionsRequestMessageSchema = v7.object({
397
467
  }).entries
398
468
  });
399
469
  var renouncePermissionsMethodName = "wallet_renouncePermissions";
400
- var renouncePermissionsParamsSchema = v7.undefined();
401
- var renouncePermissionsResultSchema = v7.literal(true);
470
+ var renouncePermissionsParamsSchema = v7.nullish(v7.null());
471
+ var renouncePermissionsResultSchema = v7.nullish(v7.null());
402
472
  var renouncePermissionsRequestMessageSchema = v7.object({
403
473
  ...rpcRequestMessageSchema.entries,
404
474
  ...v7.object({
@@ -407,6 +477,17 @@ var renouncePermissionsRequestMessageSchema = v7.object({
407
477
  id: v7.string()
408
478
  }).entries
409
479
  });
480
+ var disconnectMethodName = "wallet_disconnect";
481
+ var disconnectParamsSchema = v7.nullish(v7.null());
482
+ var disconnectResultSchema = v7.nullish(v7.null());
483
+ var disconnectRequestMessageSchema = v7.object({
484
+ ...rpcRequestMessageSchema.entries,
485
+ ...v7.object({
486
+ method: v7.literal(disconnectMethodName),
487
+ params: disconnectParamsSchema,
488
+ id: v7.string()
489
+ }).entries
490
+ });
410
491
  var getWalletTypeMethodName = "wallet_getWalletType";
411
492
  var getWalletTypeParamsSchema = v7.nullish(v7.null());
412
493
  var getWalletTypeResultSchema = walletTypeSchema;
@@ -414,16 +495,48 @@ var getWalletTypeRequestMessageSchema = v7.object({
414
495
  ...rpcRequestMessageSchema.entries,
415
496
  ...v7.object({
416
497
  method: v7.literal(getWalletTypeMethodName),
498
+ params: getWalletTypeParamsSchema,
417
499
  id: v7.string()
418
500
  }).entries
419
501
  });
420
502
  var getCurrentPermissionsMethodName = "wallet_getCurrentPermissions";
421
503
  var getCurrentPermissionsParamsSchema = v7.nullish(v7.null());
422
- var getCurrentPermissionsResultSchema = v7.array(v7.string());
504
+ var getCurrentPermissionsResultSchema = v7.array(permissions.store.permission);
423
505
  var getCurrentPermissionsRequestMessageSchema = v7.object({
424
506
  ...rpcRequestMessageSchema.entries,
425
507
  ...v7.object({
426
508
  method: v7.literal(getCurrentPermissionsMethodName),
509
+ params: getCurrentPermissionsParamsSchema,
510
+ id: v7.string()
511
+ }).entries
512
+ });
513
+ var getAccountMethodName = "wallet_getAccount";
514
+ var getAccountParamsSchema = v7.nullish(v7.null());
515
+ var getAccountResultSchema = v7.object({
516
+ id: permissions.utils.account.accountIdSchema,
517
+ addresses: v7.array(addressSchema),
518
+ walletType: walletTypeSchema
519
+ });
520
+ var getAccountRequestMessageSchema = v7.object({
521
+ ...rpcRequestMessageSchema.entries,
522
+ ...v7.object({
523
+ method: v7.literal(getAccountMethodName),
524
+ params: getAccountParamsSchema,
525
+ id: v7.string()
526
+ }).entries
527
+ });
528
+ var connectMethodName = "wallet_connect";
529
+ var connectParamsSchema = v7.nullish(
530
+ v7.object({
531
+ permissions: v7.optional(v7.array(permissionTemplate))
532
+ })
533
+ );
534
+ var connectResultSchema = getAccountResultSchema;
535
+ var connectRequestMessageSchema = v7.object({
536
+ ...rpcRequestMessageSchema.entries,
537
+ ...v7.object({
538
+ method: v7.literal(connectMethodName),
539
+ params: connectParamsSchema,
427
540
  id: v7.string()
428
541
  }).entries
429
542
  });
@@ -1059,17 +1172,16 @@ var XverseAdapter = class extends SatsConnectAdapter {
1059
1172
  };
1060
1173
 
1061
1174
  // src/adapters/unisat.ts
1062
- import { Buffer } from "buffer";
1063
1175
  import { AddressType as AddressType2, getAddressInfo } from "bitcoin-address-validation";
1064
- function convertSignInputsToInputType(signInputs, allowedSignHash) {
1176
+ import { Buffer } from "buffer";
1177
+ function convertSignInputsToInputType(signInputs) {
1065
1178
  let result = [];
1066
1179
  for (let address in signInputs) {
1067
1180
  let indexes = signInputs[address];
1068
1181
  for (let index of indexes) {
1069
1182
  result.push({
1070
1183
  index,
1071
- address,
1072
- sighashTypes: allowedSignHash ? [allowedSignHash] : void 0
1184
+ address
1073
1185
  });
1074
1186
  }
1075
1187
  }
@@ -1101,10 +1213,10 @@ var UnisatAdapter = class extends SatsConnectAdapter {
1101
1213
  };
1102
1214
  const response = [];
1103
1215
  if (purposes.includes("payment" /* Payment */)) {
1104
- response.push(paymentAddress);
1216
+ response.push({ ...paymentAddress, walletType: "software" });
1105
1217
  }
1106
1218
  if (purposes.includes("ordinals" /* Ordinals */)) {
1107
- response.push(ordinalsAddress);
1219
+ response.push({ ...ordinalsAddress, walletType: "software" });
1108
1220
  }
1109
1221
  return response;
1110
1222
  }
@@ -1117,14 +1229,16 @@ var UnisatAdapter = class extends SatsConnectAdapter {
1117
1229
  return {
1118
1230
  address,
1119
1231
  messageHash: "",
1120
- signature: response2
1232
+ signature: response2,
1233
+ protocol: "BIP322" /* BIP322 */
1121
1234
  };
1122
1235
  }
1123
1236
  const response = await window.unisat.signMessage(message, "ecdsa");
1124
1237
  return {
1125
1238
  address,
1126
1239
  messageHash: "",
1127
- signature: response
1240
+ signature: response,
1241
+ protocol: "ECDSA" /* ECDSA */
1128
1242
  };
1129
1243
  }
1130
1244
  async sendTransfer(params) {
@@ -1138,11 +1252,11 @@ var UnisatAdapter = class extends SatsConnectAdapter {
1138
1252
  };
1139
1253
  }
1140
1254
  async signPsbt(params) {
1141
- const { psbt, signInputs, allowedSignHash, broadcast } = params;
1255
+ const { psbt, signInputs, broadcast } = params;
1142
1256
  const psbtHex = Buffer.from(psbt, "base64").toString("hex");
1143
1257
  const signedPsbt = await window.unisat.signPsbt(psbtHex, {
1144
1258
  autoFinalized: broadcast,
1145
- toSignInputs: convertSignInputsToInputType(signInputs, allowedSignHash)
1259
+ toSignInputs: convertSignInputsToInputType(signInputs)
1146
1260
  });
1147
1261
  if (broadcast) {
1148
1262
  const txid = await window.unisat.pushPsbt(psbtHex);
@@ -1212,6 +1326,33 @@ var UnisatAdapter = class extends SatsConnectAdapter {
1212
1326
  };
1213
1327
  }
1214
1328
  };
1329
+ addListener = (eventName, cb) => {
1330
+ switch (eventName) {
1331
+ case "accountChange": {
1332
+ const handler = () => {
1333
+ cb({ type: "accountChange" });
1334
+ };
1335
+ window.unisat.on("accountsChanged", handler);
1336
+ return () => {
1337
+ window.unisat.removeListener("accountsChanged", handler);
1338
+ };
1339
+ }
1340
+ case "networkChange": {
1341
+ const handler = () => {
1342
+ cb({ type: "networkChange" });
1343
+ };
1344
+ window.unisat.on("networkChanged", handler);
1345
+ return () => {
1346
+ window.unisat.removeListener("networkChanged", handler);
1347
+ };
1348
+ }
1349
+ default: {
1350
+ console.error("Event not supported by the selected wallet");
1351
+ return () => {
1352
+ };
1353
+ }
1354
+ }
1355
+ };
1215
1356
  };
1216
1357
 
1217
1358
  // src/adapters/BaseAdapter.ts
@@ -1476,11 +1617,23 @@ export {
1476
1617
  accountChangeSchema,
1477
1618
  addListener,
1478
1619
  addressSchema,
1620
+ connectMethodName,
1621
+ connectParamsSchema,
1622
+ connectRequestMessageSchema,
1623
+ connectResultSchema,
1479
1624
  createInscription,
1480
1625
  createRepeatInscriptions,
1481
1626
  defaultAdapters,
1482
1627
  disconnectEventName,
1628
+ disconnectMethodName,
1629
+ disconnectParamsSchema,
1630
+ disconnectRequestMessageSchema,
1631
+ disconnectResultSchema,
1483
1632
  disconnectSchema,
1633
+ getAccountMethodName,
1634
+ getAccountParamsSchema,
1635
+ getAccountRequestMessageSchema,
1636
+ getAccountResultSchema,
1484
1637
  getAccountsMethodName,
1485
1638
  getAccountsParamsSchema,
1486
1639
  getAccountsRequestMessageSchema,
@@ -1523,6 +1676,7 @@ export {
1523
1676
  isProviderInstalled,
1524
1677
  networkChangeEventName,
1525
1678
  networkChangeSchema,
1679
+ permissionTemplate,
1526
1680
  removeDefaultProvider,
1527
1681
  renouncePermissionsMethodName,
1528
1682
  renouncePermissionsParamsSchema,
@@ -1542,6 +1696,10 @@ export {
1542
1696
  sendInscriptionsParamsSchema,
1543
1697
  sendInscriptionsResultSchema,
1544
1698
  sendInscriptionsSchema,
1699
+ sendTransferMethodName,
1700
+ sendTransferParamsSchema,
1701
+ sendTransferRequestMessageSchema,
1702
+ sendTransferResultSchema,
1545
1703
  setDefaultProvider,
1546
1704
  signMessage,
1547
1705
  signMessageMethodName,
@@ -1549,6 +1707,10 @@ export {
1549
1707
  signMessageRequestMessageSchema,
1550
1708
  signMessageResultSchema,
1551
1709
  signMultipleTransactions,
1710
+ signPsbtMethodName,
1711
+ signPsbtParamsSchema,
1712
+ signPsbtRequestMessageSchema,
1713
+ signPsbtResultSchema,
1552
1714
  signTransaction,
1553
1715
  stxGetAddressesMethodName,
1554
1716
  stxGetAddressesParamsSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sats-connect/core",
3
- "version": "0.4.0-e7d3e8d",
3
+ "version": "0.4.0-e8e6a66",
4
4
  "main": "dist/index.mjs",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.mts",
@@ -9,11 +9,12 @@
9
9
  ],
10
10
  "scripts": {
11
11
  "test": "jest",
12
- "build-debug": "webpack --mode development",
13
- "build": "npm run clean && tsup src/index.ts --format esm --dts",
14
- "build:watch": "npm run clean && tsup src/index.ts --format esm --dts --watch",
15
- "clean": "rimraf dist",
16
- "lint": "prettier --write .",
12
+ "build": "tsup",
13
+ "build:watch": "tsup --watch",
14
+ "check-types": "tsc --noEmit",
15
+ "check-format": "prettier --check .",
16
+ "format": "prettier --write .",
17
+ "ci": "npm run check-types && npm run check-format && npm run build",
17
18
  "prepare": "husky install"
18
19
  },
19
20
  "lint-staged": {
@@ -25,16 +26,15 @@
25
26
  ]
26
27
  },
27
28
  "dependencies": {
29
+ "@secretkeylabs/xverse-core": "24.0.0-4db3b55",
28
30
  "axios": "1.7.4",
29
31
  "bitcoin-address-validation": "2.2.3",
30
32
  "buffer": "6.0.3",
31
33
  "jsontokens": "4.0.1",
32
- "lodash.omit": "4.5.0",
33
- "valibot": "0.33.2"
34
+ "valibot": "0.42.1"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@types/jest": "^29.2.6",
37
- "@types/lodash.omit": "4.5.9",
38
38
  "husky": "^8.0.3",
39
39
  "lint-staged": "^13.2.3",
40
40
  "prettier": "3.3.3",
@@ -46,9 +46,7 @@
46
46
  "tsup": "^8.0.2",
47
47
  "typescript": "5.4.5",
48
48
  "util": "^0.12.4",
49
- "vm-browserify": "^1.1.2",
50
- "webpack": "^5.74.0",
51
- "webpack-cli": "^4.10.0"
49
+ "vm-browserify": "^1.1.2"
52
50
  },
53
51
  "repository": {
54
52
  "type": "git",