@breeztech/breez-sdk-spark 0.19.2 → 0.21.0

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.
Files changed (36) hide show
  1. package/breez-sdk-spark.tgz +0 -0
  2. package/bundler/breez_sdk_spark_wasm.d.ts +170 -12
  3. package/bundler/breez_sdk_spark_wasm.js +1 -1
  4. package/bundler/breez_sdk_spark_wasm_bg.js +186 -44
  5. package/bundler/breez_sdk_spark_wasm_bg.wasm +0 -0
  6. package/bundler/breez_sdk_spark_wasm_bg.wasm.d.ts +11 -0
  7. package/deno/breez_sdk_spark_wasm.d.ts +170 -12
  8. package/deno/breez_sdk_spark_wasm.js +186 -44
  9. package/deno/breez_sdk_spark_wasm_bg.wasm +0 -0
  10. package/deno/breez_sdk_spark_wasm_bg.wasm.d.ts +11 -0
  11. package/itest/.gitignore +2 -0
  12. package/itest/helpers/assert.test.js +70 -0
  13. package/itest/helpers/faucet.js +68 -0
  14. package/itest/helpers/lnurl-fixture.js +229 -0
  15. package/itest/helpers/scenario.js +444 -0
  16. package/itest/package-lock.json +519 -0
  17. package/itest/package.json +18 -0
  18. package/itest/scenarios.test.js +47 -0
  19. package/itest/smoke.test.js +184 -0
  20. package/nodejs/breez_sdk_spark_wasm.d.ts +170 -12
  21. package/nodejs/breez_sdk_spark_wasm.js +188 -44
  22. package/nodejs/breez_sdk_spark_wasm_bg.wasm +0 -0
  23. package/nodejs/breez_sdk_spark_wasm_bg.wasm.d.ts +11 -0
  24. package/nodejs/index.mjs +2 -0
  25. package/nodejs/mysql-token-store/index.cjs +302 -205
  26. package/nodejs/mysql-tree-store/index.cjs +43 -24
  27. package/nodejs/postgres-token-store/index.cjs +284 -205
  28. package/nodejs/postgres-tree-store/index.cjs +33 -17
  29. package/package.json +1 -1
  30. package/ssr/index.js +12 -0
  31. package/web/breez_sdk_spark_wasm.d.ts +181 -12
  32. package/web/breez_sdk_spark_wasm.js +186 -44
  33. package/web/breez_sdk_spark_wasm_bg.wasm +0 -0
  34. package/web/breez_sdk_spark_wasm_bg.wasm.d.ts +11 -0
  35. package/web/passkey-prf-provider/index.d.ts +9 -2
  36. package/web/passkey-prf-provider/index.js +49 -11
@@ -35,6 +35,16 @@ export class BitcoinChainServiceHandle {
35
35
  const ret = wasm.bitcoinchainservicehandle_broadcastTransaction(this.__wbg_ptr, ptr0, len0);
36
36
  return ret;
37
37
  }
38
+ /**
39
+ * @param {string} address
40
+ * @returns {Promise<any>}
41
+ */
42
+ getAddressTxos(address) {
43
+ const ptr0 = passStringToWasm0(address, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
44
+ const len0 = WASM_VECTOR_LEN;
45
+ const ret = wasm.bitcoinchainservicehandle_getAddressTxos(this.__wbg_ptr, ptr0, len0);
46
+ return ret;
47
+ }
38
48
  /**
39
49
  * @param {string} address
40
50
  * @returns {Promise<any>}
@@ -45,6 +55,17 @@ export class BitcoinChainServiceHandle {
45
55
  const ret = wasm.bitcoinchainservicehandle_getAddressUtxos(this.__wbg_ptr, ptr0, len0);
46
56
  return ret;
47
57
  }
58
+ /**
59
+ * @param {string} txid
60
+ * @param {number} vout
61
+ * @returns {Promise<any>}
62
+ */
63
+ getOutspend(txid, vout) {
64
+ const ptr0 = passStringToWasm0(txid, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
65
+ const len0 = WASM_VECTOR_LEN;
66
+ const ret = wasm.bitcoinchainservicehandle_getOutspend(this.__wbg_ptr, ptr0, len0, vout);
67
+ return ret;
68
+ }
48
69
  /**
49
70
  * @param {string} txid
50
71
  * @returns {Promise<any>}
@@ -116,6 +137,14 @@ export class BreezSdk {
116
137
  const ret = wasm.breezsdk_authorizeLightningAddressTransfer(this.__wbg_ptr, request);
117
138
  return ret;
118
139
  }
140
+ /**
141
+ * @param {BuildUnsignedBatchPackageRequest} request
142
+ * @returns {Promise<UnsignedTransferPackage>}
143
+ */
144
+ buildUnsignedBatchPackage(request) {
145
+ const ret = wasm.breezsdk_buildUnsignedBatchPackage(this.__wbg_ptr, request);
146
+ return ret;
147
+ }
119
148
  /**
120
149
  * @param {BuildUnsignedLnurlPayPackageRequest} request
121
150
  * @returns {Promise<UnsignedTransferPackage>}
@@ -360,6 +389,14 @@ export class BreezSdk {
360
389
  const ret = wasm.breezsdk_prepareLnurlPay(this.__wbg_ptr, request);
361
390
  return ret;
362
391
  }
392
+ /**
393
+ * @param {PrepareSendBatchRequest} request
394
+ * @returns {Promise<PrepareSendBatchResponse>}
395
+ */
396
+ prepareSendBatch(request) {
397
+ const ret = wasm.breezsdk_prepareSendBatch(this.__wbg_ptr, request);
398
+ return ret;
399
+ }
363
400
  /**
364
401
  * @param {PrepareSendPaymentRequest} request
365
402
  * @returns {Promise<PrepareSendPaymentResponse>}
@@ -368,6 +405,14 @@ export class BreezSdk {
368
405
  const ret = wasm.breezsdk_prepareSendPayment(this.__wbg_ptr, request);
369
406
  return ret;
370
407
  }
408
+ /**
409
+ * @param {PrepareUnilateralExitRequest} request
410
+ * @returns {Promise<PrepareUnilateralExitResponse>}
411
+ */
412
+ prepareUnilateralExit(request) {
413
+ const ret = wasm.breezsdk_prepareUnilateralExit(this.__wbg_ptr, request);
414
+ return ret;
415
+ }
371
416
  /**
372
417
  * @param {PublishSignedLnurlPayPackageRequest} request
373
418
  * @returns {Promise<PublishSignedLnurlPayResponse>}
@@ -408,7 +453,7 @@ export class BreezSdk {
408
453
  return ret;
409
454
  }
410
455
  /**
411
- * @returns {Promise<void>}
456
+ * @returns {Promise<RefundPendingConversionsResponse>}
412
457
  */
413
458
  refundPendingConversions() {
414
459
  const ret = wasm.breezsdk_refundPendingConversions(this.__wbg_ptr);
@@ -440,6 +485,14 @@ export class BreezSdk {
440
485
  const ret = wasm.breezsdk_removeEventListener(this.__wbg_ptr, ptr0, len0);
441
486
  return ret;
442
487
  }
488
+ /**
489
+ * @param {SendBatchRequest} request
490
+ * @returns {Promise<SendBatchResponse>}
491
+ */
492
+ sendBatch(request) {
493
+ const ret = wasm.breezsdk_sendBatch(this.__wbg_ptr, request);
494
+ return ret;
495
+ }
443
496
  /**
444
497
  * @param {SendPaymentRequest} request
445
498
  * @returns {Promise<SendPaymentResponse>}
@@ -464,6 +517,15 @@ export class BreezSdk {
464
517
  const ret = wasm.breezsdk_syncWallet(this.__wbg_ptr, request);
465
518
  return ret;
466
519
  }
520
+ /**
521
+ * @param {UnilateralExitRequest} request
522
+ * @param {CpfpSigner} signer
523
+ * @returns {Promise<UnilateralExitResponse>}
524
+ */
525
+ unilateralExit(request, signer) {
526
+ const ret = wasm.breezsdk_unilateralExit(this.__wbg_ptr, request, signer);
527
+ return ret;
528
+ }
467
529
  /**
468
530
  * @param {UnregisterWebhookRequest} request
469
531
  * @returns {Promise<void>}
@@ -491,6 +553,39 @@ export class BreezSdk {
491
553
  }
492
554
  if (Symbol.dispose) BreezSdk.prototype[Symbol.dispose] = BreezSdk.prototype.free;
493
555
 
556
+ /**
557
+ * A CPFP signer matching the `CpfpSigner` TypeScript interface.
558
+ */
559
+ export class DefaultCpfpSigner {
560
+ static __wrap(ptr) {
561
+ const obj = Object.create(DefaultCpfpSigner.prototype);
562
+ obj.__wbg_ptr = ptr;
563
+ DefaultCpfpSignerFinalization.register(obj, obj.__wbg_ptr, obj);
564
+ return obj;
565
+ }
566
+ __destroy_into_raw() {
567
+ const ptr = this.__wbg_ptr;
568
+ this.__wbg_ptr = 0;
569
+ DefaultCpfpSignerFinalization.unregister(this);
570
+ return ptr;
571
+ }
572
+ free() {
573
+ const ptr = this.__destroy_into_raw();
574
+ wasm.__wbg_defaultcpfpsigner_free(ptr, 0);
575
+ }
576
+ /**
577
+ * @param {Uint8Array} psbt_bytes
578
+ * @returns {Promise<Uint8Array>}
579
+ */
580
+ signPsbt(psbt_bytes) {
581
+ const ptr0 = passArray8ToWasm0(psbt_bytes, wasm.__wbindgen_malloc);
582
+ const len0 = WASM_VECTOR_LEN;
583
+ const ret = wasm.defaultcpfpsigner_signPsbt(this.__wbg_ptr, ptr0, len0);
584
+ return ret;
585
+ }
586
+ }
587
+ if (Symbol.dispose) DefaultCpfpSigner.prototype[Symbol.dispose] = DefaultCpfpSigner.prototype.free;
588
+
494
589
  /**
495
590
  * A JS handle to a backend's own session store (from `defaultSessionStore`),
496
591
  * exposing the same `getSession` / `setSession` interface. Wrap it in a JS
@@ -880,6 +975,17 @@ export class ExternalSparkSignerHandle {
880
975
  const ret = wasm.externalsparksignerhandle_signFrost(this.__wbg_ptr, ptr0, len0);
881
976
  return ret;
882
977
  }
978
+ /**
979
+ * @param {ExternalTreeNodeId} leaf_id
980
+ * @param {Uint8Array} sighash
981
+ * @returns {Promise<SchnorrSignatureBytes>}
982
+ */
983
+ signLeafRefundSpend(leaf_id, sighash) {
984
+ const ptr0 = passArray8ToWasm0(sighash, wasm.__wbindgen_malloc);
985
+ const len0 = WASM_VECTOR_LEN;
986
+ const ret = wasm.externalsparksignerhandle_signLeafRefundSpend(this.__wbg_ptr, leaf_id, ptr0, len0);
987
+ return ret;
988
+ }
883
989
  /**
884
990
  * @param {Uint8Array} message
885
991
  * @returns {Promise<EcdsaSignatureBytes>}
@@ -1794,6 +1900,21 @@ export function postgresStorage(config) {
1794
1900
  return WasmStorageConfig.__wrap(ret);
1795
1901
  }
1796
1902
 
1903
+ /**
1904
+ * Creates a default CPFP signer backed by a single private key.
1905
+ * @param {Uint8Array} secret_key_bytes
1906
+ * @returns {DefaultCpfpSigner}
1907
+ */
1908
+ export function singleKeyCpfpSigner(secret_key_bytes) {
1909
+ const ptr0 = passArray8ToWasm0(secret_key_bytes, wasm.__wbindgen_malloc);
1910
+ const len0 = WASM_VECTOR_LEN;
1911
+ const ret = wasm.singleKeyCpfpSigner(ptr0, len0);
1912
+ if (ret[2]) {
1913
+ throw takeFromExternrefTable0(ret[1]);
1914
+ }
1915
+ return DefaultCpfpSigner.__wrap(ret[0]);
1916
+ }
1917
+
1797
1918
  /**
1798
1919
  * Runs automatically when the wasm module is instantiated. Installs the
1799
1920
  * panic hook so Rust panics surface as readable `console.error` output
@@ -2103,8 +2224,8 @@ function __wbg_get_imports() {
2103
2224
  const ret = createMysqlTreeStoreWithPool(arg0, getArrayU8FromWasm0(arg1, arg2), arg3, arg4, arg5 !== 0);
2104
2225
  return ret;
2105
2226
  }, arguments); },
2106
- __wbg_createPasskey_5ceae054474c582a: function() { return handleError(function (arg0, arg1) {
2107
- const ret = arg0.createPasskey(arg1);
2227
+ __wbg_createPasskey_37eb4d30fdaf2a3f: function() { return handleError(function (arg0, arg1, arg2) {
2228
+ const ret = arg0.createPasskey(arg1, arg2);
2108
2229
  return ret;
2109
2230
  }, arguments); },
2110
2231
  __wbg_createPostgresPool_3c396c7ab2f0eab2: function() { return handleError(function (arg0) {
@@ -2329,6 +2450,18 @@ function __wbg_get_imports() {
2329
2450
  const ret = Array.from(arg0);
2330
2451
  return ret;
2331
2452
  },
2453
+ __wbg_getAddressTxos_3ca1c4b39dd84911: function() { return handleError(function (arg0, arg1, arg2) {
2454
+ let deferred0_0;
2455
+ let deferred0_1;
2456
+ try {
2457
+ deferred0_0 = arg1;
2458
+ deferred0_1 = arg2;
2459
+ const ret = arg0.getAddressTxos(getStringFromWasm0(arg1, arg2));
2460
+ return ret;
2461
+ } finally {
2462
+ wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
2463
+ }
2464
+ }, arguments); },
2332
2465
  __wbg_getAddressUtxos_9526b6d8078b867e: function() { return handleError(function (arg0, arg1, arg2) {
2333
2466
  let deferred0_0;
2334
2467
  let deferred0_1;
@@ -2394,6 +2527,18 @@ function __wbg_get_imports() {
2394
2527
  const ret = arg0.getLeaves();
2395
2528
  return ret;
2396
2529
  }, arguments); },
2530
+ __wbg_getOutspend_4b3c117972515790: function() { return handleError(function (arg0, arg1, arg2, arg3) {
2531
+ let deferred0_0;
2532
+ let deferred0_1;
2533
+ try {
2534
+ deferred0_0 = arg1;
2535
+ deferred0_1 = arg2;
2536
+ const ret = arg0.getOutspend(getStringFromWasm0(arg1, arg2), arg3 >>> 0);
2537
+ return ret;
2538
+ } finally {
2539
+ wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
2540
+ }
2541
+ }, arguments); },
2397
2542
  __wbg_getPaymentById_6d677ada5879df99: function() { return handleError(function (arg0, arg1, arg2) {
2398
2543
  let deferred0_0;
2399
2544
  let deferred0_1;
@@ -2947,38 +3092,28 @@ function __wbg_get_imports() {
2947
3092
  const ret = module.require;
2948
3093
  return ret;
2949
3094
  }, arguments); },
2950
- __wbg_reserveTokenOutputsByOutpoints_a18be5f9fb4ab30a: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {
3095
+ __wbg_reserveTokenOutputsByOutpoints_2b3aa01becdba378: function() { return handleError(function (arg0, arg1, arg2, arg3) {
2951
3096
  let deferred0_0;
2952
3097
  let deferred0_1;
2953
- let deferred1_0;
2954
- let deferred1_1;
2955
3098
  try {
2956
- deferred0_0 = arg1;
2957
- deferred0_1 = arg2;
2958
- deferred1_0 = arg4;
2959
- deferred1_1 = arg5;
2960
- const ret = arg0.reserveTokenOutputsByOutpoints(getStringFromWasm0(arg1, arg2), arg3, getStringFromWasm0(arg4, arg5));
3099
+ deferred0_0 = arg2;
3100
+ deferred0_1 = arg3;
3101
+ const ret = arg0.reserveTokenOutputsByOutpoints(arg1, getStringFromWasm0(arg2, arg3));
2961
3102
  return ret;
2962
3103
  } finally {
2963
3104
  wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
2964
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
2965
3105
  }
2966
3106
  }, arguments); },
2967
- __wbg_reserveTokenOutputs_233990fbd0ce963a: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
3107
+ __wbg_reserveTokenOutputs_17ba3b5fcc91b000: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {
2968
3108
  let deferred0_0;
2969
3109
  let deferred0_1;
2970
- let deferred1_0;
2971
- let deferred1_1;
2972
3110
  try {
2973
- deferred0_0 = arg1;
2974
- deferred0_1 = arg2;
2975
- deferred1_0 = arg4;
2976
- deferred1_1 = arg5;
2977
- const ret = arg0.reserveTokenOutputs(getStringFromWasm0(arg1, arg2), arg3, getStringFromWasm0(arg4, arg5), arg6, arg7);
3111
+ deferred0_0 = arg2;
3112
+ deferred0_1 = arg3;
3113
+ const ret = arg0.reserveTokenOutputs(arg1, getStringFromWasm0(arg2, arg3), arg4, arg5);
2978
3114
  return ret;
2979
3115
  } finally {
2980
3116
  wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
2981
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
2982
3117
  }
2983
3118
  }, arguments); },
2984
3119
  __wbg_resolve_9feb5d906ca62419: function(arg0) {
@@ -2992,17 +3127,9 @@ function __wbg_get_imports() {
2992
3127
  const ret = SdkBuilder.__wrap(arg0);
2993
3128
  return ret;
2994
3129
  },
2995
- __wbg_selectTokenOutputs_450f20621013b14d: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {
2996
- let deferred0_0;
2997
- let deferred0_1;
2998
- try {
2999
- deferred0_0 = arg1;
3000
- deferred0_1 = arg2;
3001
- const ret = arg0.selectTokenOutputs(getStringFromWasm0(arg1, arg2), arg3, arg4, arg5);
3002
- return ret;
3003
- } finally {
3004
- wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
3005
- }
3130
+ __wbg_selectTokenOutputs_378aebd65f866d1b: function() { return handleError(function (arg0, arg1, arg2, arg3) {
3131
+ const ret = arg0.selectTokenOutputs(arg1, arg2, arg3);
3132
+ return ret;
3006
3133
  }, arguments); },
3007
3134
  __wbg_send_0edb796d05cd3239: function() { return handleError(function (arg0, arg1, arg2) {
3008
3135
  arg0.send(getStringFromWasm0(arg1, arg2));
@@ -3223,12 +3350,24 @@ function __wbg_get_imports() {
3223
3350
  wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
3224
3351
  }
3225
3352
  }, arguments); },
3353
+ __wbg_signLeafRefundSpend_dc0eea305a0dde9c: function() { return handleError(function (arg0, arg1, arg2, arg3) {
3354
+ var v0 = getArrayU8FromWasm0(arg2, arg3).slice();
3355
+ wasm.__wbindgen_free(arg2, arg3 * 1, 1);
3356
+ const ret = arg0.signLeafRefundSpend(arg1, v0);
3357
+ return ret;
3358
+ }, arguments); },
3226
3359
  __wbg_signMessage_80ec0b0dfc7f00ee: function() { return handleError(function (arg0, arg1, arg2) {
3227
3360
  var v0 = getArrayU8FromWasm0(arg1, arg2).slice();
3228
3361
  wasm.__wbindgen_free(arg1, arg2 * 1, 1);
3229
3362
  const ret = arg0.signMessage(v0);
3230
3363
  return ret;
3231
3364
  }, arguments); },
3365
+ __wbg_signPsbt_625c8cbdec488cc6: function() { return handleError(function (arg0, arg1, arg2) {
3366
+ var v0 = getArrayU8FromWasm0(arg1, arg2).slice();
3367
+ wasm.__wbindgen_free(arg1, arg2 * 1, 1);
3368
+ const ret = arg0.signPsbt(v0);
3369
+ return ret;
3370
+ }, arguments); },
3232
3371
  __wbg_signSparkInvoice_cca6c7f35b5e85d2: function() { return handleError(function (arg0, arg1) {
3233
3372
  const ret = arg0.signSparkInvoice(arg1);
3234
3373
  return ret;
@@ -3440,62 +3579,62 @@ function __wbg_get_imports() {
3440
3579
  return ret;
3441
3580
  },
3442
3581
  __wbindgen_cast_0000000000000001: function(arg0, arg1) {
3443
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 17, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3582
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 21, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3444
3583
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h21f6855640435575);
3445
3584
  return ret;
3446
3585
  },
3447
3586
  __wbindgen_cast_0000000000000002: function(arg0, arg1) {
3448
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 366, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3587
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3449
3588
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2);
3450
3589
  return ret;
3451
3590
  },
3452
3591
  __wbindgen_cast_0000000000000003: function(arg0, arg1) {
3453
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("CloseEvent")], shim_idx: 366, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3592
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("CloseEvent")], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3454
3593
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2_2);
3455
3594
  return ret;
3456
3595
  },
3457
3596
  __wbindgen_cast_0000000000000004: function(arg0, arg1) {
3458
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("ErrorEvent")], shim_idx: 366, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3597
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("ErrorEvent")], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3459
3598
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2_3);
3460
3599
  return ret;
3461
3600
  },
3462
3601
  __wbindgen_cast_0000000000000005: function(arg0, arg1) {
3463
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("Event")], shim_idx: 366, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3602
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("Event")], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3464
3603
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2_4);
3465
3604
  return ret;
3466
3605
  },
3467
3606
  __wbindgen_cast_0000000000000006: function(arg0, arg1) {
3468
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("MessageEvent")], shim_idx: 366, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3607
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("MessageEvent")], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3469
3608
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2_5);
3470
3609
  return ret;
3471
3610
  },
3472
3611
  __wbindgen_cast_0000000000000007: function(arg0, arg1) {
3473
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("SessionStore")], shim_idx: 17, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3612
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("SessionStore")], shim_idx: 21, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3474
3613
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h21f6855640435575_6);
3475
3614
  return ret;
3476
3615
  },
3477
3616
  __wbindgen_cast_0000000000000008: function(arg0, arg1) {
3478
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("Storage")], shim_idx: 17, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3617
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("Storage")], shim_idx: 21, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3479
3618
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h21f6855640435575_7);
3480
3619
  return ret;
3481
3620
  },
3482
3621
  __wbindgen_cast_0000000000000009: function(arg0, arg1) {
3483
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("TokenStore")], shim_idx: 17, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3622
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("TokenStore")], shim_idx: 21, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3484
3623
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h21f6855640435575_8);
3485
3624
  return ret;
3486
3625
  },
3487
3626
  __wbindgen_cast_000000000000000a: function(arg0, arg1) {
3488
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("TreeStore")], shim_idx: 17, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3627
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("TreeStore")], shim_idx: 21, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
3489
3628
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h21f6855640435575_9);
3490
3629
  return ret;
3491
3630
  },
3492
3631
  __wbindgen_cast_000000000000000b: function(arg0, arg1) {
3493
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 371, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3632
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 397, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3494
3633
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h1d6669a7b693932a);
3495
3634
  return ret;
3496
3635
  },
3497
3636
  __wbindgen_cast_000000000000000c: function(arg0, arg1) {
3498
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 403, ret: Unit, inner_ret: Some(Unit) }, mutable: false }) -> Externref`.
3637
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 427, ret: Unit, inner_ret: Some(Unit) }, mutable: false }) -> Externref`.
3499
3638
  const ret = makeClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h0fa3f876e31d2a3e);
3500
3639
  return ret;
3501
3640
  },
@@ -3680,6 +3819,9 @@ const BitcoinChainServiceHandleFinalization = (typeof FinalizationRegistry === '
3680
3819
  const BreezSdkFinalization = (typeof FinalizationRegistry === 'undefined')
3681
3820
  ? { register: () => {}, unregister: () => {} }
3682
3821
  : new FinalizationRegistry(ptr => wasm.__wbg_breezsdk_free(ptr, 1));
3822
+ const DefaultCpfpSignerFinalization = (typeof FinalizationRegistry === 'undefined')
3823
+ ? { register: () => {}, unregister: () => {} }
3824
+ : new FinalizationRegistry(ptr => wasm.__wbg_defaultcpfpsigner_free(ptr, 1));
3683
3825
  const DefaultSessionStoreFinalization = (typeof FinalizationRegistry === 'undefined')
3684
3826
  ? { register: () => {}, unregister: () => {} }
3685
3827
  : new FinalizationRegistry(ptr => wasm.__wbg_defaultsessionstore_free(ptr, 1));
Binary file
@@ -3,6 +3,7 @@
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_bitcoinchainservicehandle_free: (a: number, b: number) => void;
5
5
  export const __wbg_breezsdk_free: (a: number, b: number) => void;
6
+ export const __wbg_defaultcpfpsigner_free: (a: number, b: number) => void;
6
7
  export const __wbg_externalsigners_free: (a: number, b: number) => void;
7
8
  export const __wbg_passkeyclient_free: (a: number, b: number) => void;
8
9
  export const __wbg_passkeylabels_free: (a: number, b: number) => void;
@@ -11,13 +12,16 @@ export const __wbg_tokenissuer_free: (a: number, b: number) => void;
11
12
  export const __wbg_wasmsdkcontext_free: (a: number, b: number) => void;
12
13
  export const __wbg_wasmstorageconfig_free: (a: number, b: number) => void;
13
14
  export const bitcoinchainservicehandle_broadcastTransaction: (a: number, b: number, c: number) => any;
15
+ export const bitcoinchainservicehandle_getAddressTxos: (a: number, b: number, c: number) => any;
14
16
  export const bitcoinchainservicehandle_getAddressUtxos: (a: number, b: number, c: number) => any;
17
+ export const bitcoinchainservicehandle_getOutspend: (a: number, b: number, c: number, d: number) => any;
15
18
  export const bitcoinchainservicehandle_getTransactionHex: (a: number, b: number, c: number) => any;
16
19
  export const bitcoinchainservicehandle_getTransactionStatus: (a: number, b: number, c: number) => any;
17
20
  export const bitcoinchainservicehandle_recommendedFees: (a: number) => any;
18
21
  export const breezsdk_addContact: (a: number, b: any) => any;
19
22
  export const breezsdk_addEventListener: (a: number, b: any) => any;
20
23
  export const breezsdk_authorizeLightningAddressTransfer: (a: number, b: any) => any;
24
+ export const breezsdk_buildUnsignedBatchPackage: (a: number, b: any) => any;
21
25
  export const breezsdk_buildUnsignedLnurlPayPackage: (a: number, b: any) => any;
22
26
  export const breezsdk_buildUnsignedTransferPackage: (a: number, b: any) => any;
23
27
  export const breezsdk_buyBitcoin: (a: number, b: any) => any;
@@ -49,7 +53,9 @@ export const breezsdk_lnurlWithdraw: (a: number, b: any) => any;
49
53
  export const breezsdk_optimizeLeaves: (a: number, b: any) => any;
50
54
  export const breezsdk_parse: (a: number, b: number, c: number) => any;
51
55
  export const breezsdk_prepareLnurlPay: (a: number, b: any) => any;
56
+ export const breezsdk_prepareSendBatch: (a: number, b: any) => any;
52
57
  export const breezsdk_prepareSendPayment: (a: number, b: any) => any;
58
+ export const breezsdk_prepareUnilateralExit: (a: number, b: any) => any;
53
59
  export const breezsdk_publishSignedLnurlPayPackage: (a: number, b: any) => any;
54
60
  export const breezsdk_publishSignedTransferPackage: (a: number, b: any) => any;
55
61
  export const breezsdk_receivePayment: (a: number, b: any) => any;
@@ -59,9 +65,11 @@ export const breezsdk_refundPendingConversions: (a: number) => any;
59
65
  export const breezsdk_registerLightningAddress: (a: number, b: any) => any;
60
66
  export const breezsdk_registerWebhook: (a: number, b: any) => any;
61
67
  export const breezsdk_removeEventListener: (a: number, b: number, c: number) => any;
68
+ export const breezsdk_sendBatch: (a: number, b: any) => any;
62
69
  export const breezsdk_sendPayment: (a: number, b: any) => any;
63
70
  export const breezsdk_signMessage: (a: number, b: any) => any;
64
71
  export const breezsdk_syncWallet: (a: number, b: any) => any;
72
+ export const breezsdk_unilateralExit: (a: number, b: any, c: any) => any;
65
73
  export const breezsdk_unregisterWebhook: (a: number, b: any) => any;
66
74
  export const breezsdk_updateContact: (a: number, b: any) => any;
67
75
  export const breezsdk_updateUserSettings: (a: number, b: any) => any;
@@ -77,6 +85,7 @@ export const defaultPostgresStorageConfig: (a: number, b: number) => any;
77
85
  export const defaultServerConfig: (a: any) => any;
78
86
  export const defaultSessionStore: (a: number, b: any, c: number, d: number) => any;
79
87
  export const defaultStorage: (a: number, b: number) => number;
88
+ export const defaultcpfpsigner_signPsbt: (a: number, b: number, c: number) => any;
80
89
  export const defaultsessionstore_getSession: (a: number, b: number, c: number) => any;
81
90
  export const defaultsessionstore_setSession: (a: number, b: number, c: number, d: any) => any;
82
91
  export const externalbreezsignerhandle_decryptEcies: (a: number, b: number, c: number, d: number, e: number) => any;
@@ -103,6 +112,7 @@ export const externalsparksignerhandle_prepareTokenTransaction: (a: number, b: a
103
112
  export const externalsparksignerhandle_prepareTransfer: (a: number, b: any) => any;
104
113
  export const externalsparksignerhandle_signAuthenticationChallenge: (a: number, b: number, c: number) => any;
105
114
  export const externalsparksignerhandle_signFrost: (a: number, b: number, c: number) => any;
115
+ export const externalsparksignerhandle_signLeafRefundSpend: (a: number, b: any, c: number, d: number) => any;
106
116
  export const externalsparksignerhandle_signMessage: (a: number, b: number, c: number) => any;
107
117
  export const externalsparksignerhandle_signSparkInvoice: (a: number, b: any) => any;
108
118
  export const externalsparksignerhandle_signStaticDepositRefund: (a: number, b: any) => any;
@@ -139,6 +149,7 @@ export const sdkbuilder_withSessionStore: (a: number, b: any) => number;
139
149
  export const sdkbuilder_withSharedContext: (a: number, b: number) => number;
140
150
  export const sdkbuilder_withStorage: (a: number, b: any) => number;
141
151
  export const sdkbuilder_withStorageBackend: (a: number, b: number) => number;
152
+ export const singleKeyCpfpSigner: (a: number, b: number) => [number, number, number];
142
153
  export const start: () => void;
143
154
  export const tokenissuer_burnIssuerToken: (a: number, b: any) => any;
144
155
  export const tokenissuer_createIssuerToken: (a: number, b: any) => any;
@@ -4,11 +4,18 @@ import type {
4
4
  PasskeyProviderOptions,
5
5
  PrfProvider,
6
6
  PasskeyCredential,
7
+ CreatePasskeyOutput,
7
8
  DeriveSeedsResult,
8
9
  DeriveSeedOptions
9
10
  } from '../breez_sdk_spark_wasm.js';
10
11
 
11
- export type { PasskeyCredential, DeriveSeedsResult, DeriveSeedOptions, PasskeyProviderOptions };
12
+ export type {
13
+ PasskeyCredential,
14
+ CreatePasskeyOutput,
15
+ DeriveSeedsResult,
16
+ DeriveSeedOptions,
17
+ PasskeyProviderOptions
18
+ };
12
19
 
13
20
  /**
14
21
  * Outcome of a domain-association check: whether `rpId` is a valid
@@ -135,7 +142,7 @@ export declare class PasskeyProvider {
135
142
  * `excludeCredentials` already exists on the device.
136
143
  * @throws If the user cancels or PRF is not supported.
137
144
  */
138
- createPasskey(excludeCredentials?: Uint8Array[]): Promise<PasskeyCredential>;
145
+ createPasskey(excludeCredentials?: Uint8Array[], salts?: string[]): Promise<CreatePasskeyOutput>;
139
146
 
140
147
  /**
141
148
  * Check if a PRF-capable passkey is available on this device.
@@ -259,12 +259,19 @@ export class PasskeyProvider {
259
259
  * `excludeCredentials` (already-registered IDs) to surface a repeat
260
260
  * registration as `PasskeyAlreadyExistsError`.
261
261
  *
262
+ * Asking the create ceremony to evaluate PRF for `salts` removes the
263
+ * assertion that would otherwise follow it, so registration costs one
264
+ * prompt instead of two. Browsers that acknowledge PRF without
265
+ * evaluating return `seeds: null` and the caller derives as before.
266
+ *
262
267
  * @param {Uint8Array[]} [excludeCredentials]
263
- * @returns {Promise<PasskeyCredential>} `aaguid`/`backupEligible`
264
- * are null on browsers without `getAuthenticatorData()`.
268
+ * @param {string[]} [salts] Salts to evaluate during the ceremony.
269
+ * @returns {Promise<CreatePasskeyOutput>} `aaguid`/`backupEligible`
270
+ * are null on browsers without `getAuthenticatorData()`. `seeds` is
271
+ * null unless the browser returned one output per salt.
265
272
  */
266
- async createPasskey(excludeCredentials = []) {
267
- return await this._registerCredential(excludeCredentials);
273
+ async createPasskey(excludeCredentials = [], salts = []) {
274
+ return await this._registerCredential(excludeCredentials, salts);
268
275
  }
269
276
 
270
277
  /**
@@ -504,10 +511,12 @@ export class PasskeyProvider {
504
511
  * @param {Uint8Array[]} [excludeCredentials=[]] - Already-registered
505
512
  * IDs; a match makes the authenticator refuse, preventing a
506
513
  * duplicate registration on the same device.
507
- * @returns {Promise<{ credentialId: Uint8Array, userId: Uint8Array, aaguid: Uint8Array | null, backupEligible: boolean | null }>}
514
+ * @param {string[]} [salts=[]] - Salts to evaluate during the create
515
+ * ceremony; omit to register without deriving.
516
+ * @returns {Promise<{ credential: { credentialId: Uint8Array, userId: Uint8Array, aaguid: Uint8Array | null, backupEligible: boolean | null }, seeds: Uint8Array[] | null }>}
508
517
  * @private
509
518
  */
510
- async _registerCredential(excludeCredentials = []) {
519
+ async _registerCredential(excludeCredentials = [], salts = []) {
511
520
  // Fresh per-call user.id: reusing one across creates on the same
512
521
  // rpId silently overwrites the prior credential on some
513
522
  // authenticators. (WebAuthn requires 1 to 64 bytes.)
@@ -540,7 +549,18 @@ export class PasskeyProvider {
540
549
  authenticatorSelection,
541
550
  // Explicit so future security review can't read it as ambient.
542
551
  attestation: 'none',
543
- extensions: { prf: {} },
552
+ extensions: {
553
+ prf: salts.length > 0
554
+ ? {
555
+ eval: {
556
+ first: new TextEncoder().encode(salts[0]),
557
+ ...(salts.length > 1
558
+ ? { second: new TextEncoder().encode(salts[1]) }
559
+ : {}),
560
+ },
561
+ }
562
+ : {},
563
+ },
544
564
  };
545
565
 
546
566
  if (Array.isArray(this.hints) && this.hints.length > 0) {
@@ -599,12 +619,30 @@ export class PasskeyProvider {
599
619
  );
600
620
  }
601
621
 
622
+ // Only usable as a complete set: a browser that drops the second
623
+ // output leaves a partial derive, which is no derive at all, so
624
+ // fall back to the assertion path rather than half-deriving.
625
+ let seeds = null;
626
+ const results = extensionResults.prf.results;
627
+ if (salts.length > 0 && results && results.first) {
628
+ const collected = [new Uint8Array(results.first)];
629
+ if (results.second) {
630
+ collected.push(new Uint8Array(results.second));
631
+ }
632
+ if (collected.length === salts.length) {
633
+ seeds = collected;
634
+ }
635
+ }
636
+
602
637
  const meta = extractRegistrationMetadata(credential);
603
638
  return {
604
- credentialId: new Uint8Array(credential.rawId),
605
- userId: resolvedUserId,
606
- aaguid: meta ? meta.aaguid : null,
607
- backupEligible: meta ? meta.backupEligible : null,
639
+ credential: {
640
+ credentialId: new Uint8Array(credential.rawId),
641
+ userId: resolvedUserId,
642
+ aaguid: meta ? meta.aaguid : null,
643
+ backupEligible: meta ? meta.backupEligible : null,
644
+ },
645
+ seeds,
608
646
  };
609
647
  }
610
648