@breeztech/breez-sdk-spark 0.20.0-dev1 → 0.21.1

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.
Binary file
@@ -89,7 +89,7 @@ interface WasmTokenOutputWithPrevOut {
89
89
  }
90
90
 
91
91
  interface WasmTokenOutputs {
92
- metadata: WasmTokenMetadata;
92
+ metadata: WasmTokenMetadata[];
93
93
  outputs: WasmTokenOutputWithPrevOut[];
94
94
  }
95
95
 
@@ -119,26 +119,23 @@ type WasmReservationTarget =
119
119
  | { type: 'maxOutputCount'; value: number };
120
120
 
121
121
  export interface TokenStore {
122
- setTokensOutputs: (tokenOutputs: WasmTokenOutputs[], refreshStartedAtMs: number) => Promise<void>;
122
+ setTokensOutputs: (tokenOutputs: WasmTokenOutputs, refreshStartedAtMs: number) => Promise<void>;
123
123
  listTokensOutputs: () => Promise<WasmTokenOutputsPerStatus[]>;
124
124
  getTokenBalances: () => Promise<WasmTokenBalance[]>;
125
125
  getTokenOutputs: (filter: WasmGetTokenOutputsFilter) => Promise<WasmTokenOutputsPerStatus>;
126
- updateTokenOutputs: (outputsToRemove: [string, number][], outputsToAdd: WasmTokenOutputs | null) => Promise<void>;
126
+ updateTokenOutputs: (outputsToRemove: [string, number][], outputsToAdd: WasmTokenOutputs) => Promise<void>;
127
127
  reserveTokenOutputs: (
128
- tokenIdentifier: string,
129
- target: WasmReservationTarget,
128
+ targets: [string, WasmReservationTarget][],
130
129
  purpose: string,
131
130
  preferredOutputs: WasmTokenOutputWithPrevOut[] | null,
132
131
  selectionStrategy: string | null
133
132
  ) => Promise<WasmTokenOutputsReservation>;
134
133
  selectTokenOutputs: (
135
- tokenIdentifier: string,
136
- target: WasmReservationTarget,
134
+ targets: [string, WasmReservationTarget][],
137
135
  preferredOutputs: WasmTokenOutputWithPrevOut[] | null,
138
136
  selectionStrategy: string | null
139
137
  ) => Promise<WasmTokenOutputs>;
140
138
  reserveTokenOutputsByOutpoints: (
141
- tokenIdentifier: string,
142
139
  outpoints: { prevTxHash: string; prevTxVout: number }[],
143
140
  purpose: string
144
141
  ) => Promise<WasmTokenOutputsReservation>;
@@ -147,6 +144,20 @@ export interface TokenStore {
147
144
  now: () => Promise<number>;
148
145
  }
149
146
 
147
+ /**
148
+ * A created credential, plus the PRF outputs when the browser evaluated
149
+ * them during the create ceremony. `seeds` is null when it did not, so
150
+ * the caller derives through `deriveSeeds`.
151
+ *
152
+ * Seeds returned here must equal what `deriveSeeds` returns for the same
153
+ * salts: the wallet is derived from them either way, so a mismatch means
154
+ * register and sign-in land on different wallets.
155
+ */
156
+ export interface CreatePasskeyOutput {
157
+ credential: PasskeyCredential;
158
+ seeds?: Uint8Array[] | null;
159
+ }
160
+
150
161
  /**
151
162
  * A passkey credential from `register` or `signIn`. `credentialId` is
152
163
  * always set. The attestation fields (`userId`, `aaguid`,
@@ -297,10 +308,14 @@ export interface PrfProvider {
297
308
  * `excludeCredentials` lists already-registered IDs; a match raises
298
309
  * `PasskeyAlreadyExistsError`.
299
310
  *
311
+ * Evaluating PRF for `salts` in the same ceremony returns the seeds on
312
+ * `seeds`, and the caller then needs no assertion. Return `seeds: null`
313
+ * when the authenticator evaluated none, or fewer than one per salt.
314
+ *
300
315
  * @throws `PasskeyAlreadyExistsError` when an entry in
301
316
  * `excludeCredentials` matches a credential already on the device.
302
317
  */
303
- createPasskey?(excludeCredentials: Uint8Array[]): Promise<PasskeyCredential>;
318
+ createPasskey?(excludeCredentials: Uint8Array[], salts: string[]): Promise<CreatePasskeyOutput>;
304
319
 
305
320
  /**
306
321
  * Whether this provider can produce PRF outputs on the current
@@ -488,6 +503,17 @@ export interface AuthorizeTransferRequest {
488
503
  transfereePubkey: string;
489
504
  }
490
505
 
506
+ export interface BatchRecipient {
507
+ paymentRequest: string;
508
+ amount?: bigint;
509
+ tokenIdentifier?: string;
510
+ }
511
+
512
+ export interface BatchTotal {
513
+ tokenIdentifier?: string;
514
+ amount: bigint;
515
+ }
516
+
491
517
  export interface Bip21Details {
492
518
  amountSat?: number;
493
519
  assetId?: string;
@@ -585,6 +611,10 @@ export interface Bolt12OfferDetails {
585
611
  signingPubkey?: string;
586
612
  }
587
613
 
614
+ export interface BuildUnsignedBatchPackageRequest {
615
+ prepareResponse: PrepareSendBatchResponse;
616
+ }
617
+
588
618
  export interface BuildUnsignedLnurlPayPackageRequest {
589
619
  prepareResponse: PrepareLnurlPayResponse;
590
620
  }
@@ -1315,6 +1345,15 @@ export interface PrepareLnurlPayResponse {
1315
1345
  feePolicy: FeePolicy;
1316
1346
  }
1317
1347
 
1348
+ export interface PrepareSendBatchRequest {
1349
+ recipients: BatchRecipient[];
1350
+ }
1351
+
1352
+ export interface PrepareSendBatchResponse {
1353
+ recipients: ResolvedBatchRecipient[];
1354
+ totals: BatchTotal[];
1355
+ }
1356
+
1318
1357
  export interface PrepareSendPaymentRequest {
1319
1358
  paymentRequest: PaymentRequest;
1320
1359
  amount?: bigint;
@@ -1445,6 +1484,12 @@ export interface RegisterWebhookResponse {
1445
1484
  webhookId: string;
1446
1485
  }
1447
1486
 
1487
+ export interface ResolvedBatchRecipient {
1488
+ destination: BatchDestination;
1489
+ amount: bigint;
1490
+ tokenIdentifier?: string;
1491
+ }
1492
+
1448
1493
  export interface RestClient {
1449
1494
  getRequest(url: string, headers?: Record<string, string>): Promise<RestResponse>;
1450
1495
  postRequest(url: string, headers?: Record<string, string>, body?: string): Promise<RestResponse>;
@@ -1464,6 +1509,14 @@ export interface SecretBytes {
1464
1509
  bytes: number[];
1465
1510
  }
1466
1511
 
1512
+ export interface SendBatchRequest {
1513
+ prepareResponse: PrepareSendBatchResponse;
1514
+ }
1515
+
1516
+ export interface SendBatchResponse {
1517
+ payments: Payment[];
1518
+ }
1519
+
1467
1520
  export interface SendOnchainFeeQuote {
1468
1521
  id: string;
1469
1522
  expiresAt: number;
@@ -1822,6 +1875,8 @@ export type AssetFilter = { type: "bitcoin" } | { type: "token"; tokenIdentifier
1822
1875
 
1823
1876
  export type AutoOptimizationEvent = { type: "started"; totalRounds: number } | { type: "roundCompleted"; currentRound: number; totalRounds: number } | { type: "completed" } | { type: "cancelled" } | { type: "failed"; error: string } | { type: "skipped" };
1824
1877
 
1878
+ export type BatchDestination = { type: "sparkAddress"; address: string } | { type: "sparkInvoice"; invoiceDetails: SparkInvoiceDetails };
1879
+
1825
1880
  export type BitcoinNetwork = "bitcoin" | "testnet3" | "testnet4" | "signet" | "regtest";
1826
1881
 
1827
1882
  export type BuildTransferPackageOptions = { type: "bitcoinAddress"; confirmationSpeed: OnchainConfirmationSpeed } | { type: "bolt11Invoice"; preferSpark: boolean; completionTimeoutSecs?: number };
@@ -1906,7 +1961,7 @@ export type ProvisionalPaymentDetails = { type: "bitcoin"; withdrawalAddress: st
1906
1961
 
1907
1962
  export type PublishSignedLnurlPayResponse = { type: "swapCompleted" } | { type: "paymentSent"; response: LnurlPayResponse };
1908
1963
 
1909
- export type PublishSignedTransferPackageResponse = { type: "swapCompleted" } | { type: "paymentSent"; payment: Payment };
1964
+ export type PublishSignedTransferPackageResponse = { type: "swapCompleted" } | { type: "paymentSent"; payment: Payment } | { type: "paymentsSent"; payments: Payment[] };
1910
1965
 
1911
1966
  export type ReceivePaymentMethod = { type: "sparkAddress" } | { type: "sparkInvoice"; amount?: string; tokenIdentifier?: string; expiryTime?: number; description?: string; senderPublicKey?: string } | { type: "bitcoinAddress"; newAddress?: boolean } | { type: "bolt11Invoice"; description: string; amountSats?: number; expirySecs?: number; paymentHash?: string };
1912
1967
 
@@ -1944,7 +1999,7 @@ export type TransferTarget = { type: "spark"; address: string; sparkInvoice?: st
1944
1999
 
1945
2000
  export type UnilateralExitTxKind = "fanOut" | "node" | "refund" | "sweep";
1946
2001
 
1947
- export type UnsignedTransferPackage = { type: "swap"; prepareTransfer: ExternalPrepareTransferRequest; targetAmounts: number[]; amountSat: number; feeSat: number } | { type: "transfer"; prepareTransfer: ExternalPrepareTransferRequest; amountSat: number; feeSat: number; target: TransferTarget } | { type: "token"; prepareTokenTransaction: ExternalPrepareTokenTransactionRequest; tokenContext: number[]; tokenIdentifier: string; amount: string; fee: string; isSwap: boolean };
2002
+ export type UnsignedTransferPackage = { type: "swap"; prepareTransfer: ExternalPrepareTransferRequest; targetAmounts: number[]; amountSat: number; feeSat: number } | { type: "transfer"; prepareTransfer: ExternalPrepareTransferRequest; amountSat: number; feeSat: number; target: TransferTarget } | { type: "token"; prepareTokenTransaction: ExternalPrepareTokenTransactionRequest; tokenContext: number[]; tokenIdentifier: string; amount: string; fee: string; isSwap: boolean } | { type: "tokenBatch"; prepareTokenTransaction: ExternalPrepareTokenTransactionRequest; tokenContext: number[]; totals: BatchTotal[]; isSwap: boolean };
1948
2003
 
1949
2004
  export type UpdateDepositPayload = { type: "claimError"; error: DepositClaimError } | { type: "refund"; refundTxid: string; refundTx: string };
1950
2005
 
@@ -1979,6 +2034,7 @@ export class BreezSdk {
1979
2034
  addContact(request: AddContactRequest): Promise<Contact>;
1980
2035
  addEventListener(listener: EventListener): Promise<string>;
1981
2036
  authorizeLightningAddressTransfer(request: AuthorizeTransferRequest): Promise<TransferAuthorization>;
2037
+ buildUnsignedBatchPackage(request: BuildUnsignedBatchPackageRequest): Promise<UnsignedTransferPackage>;
1982
2038
  buildUnsignedLnurlPayPackage(request: BuildUnsignedLnurlPayPackageRequest): Promise<UnsignedTransferPackage>;
1983
2039
  buildUnsignedTransferPackage(request: BuildUnsignedTransferPackageRequest): Promise<UnsignedTransferPackage>;
1984
2040
  buyBitcoin(request: BuyBitcoinRequest): Promise<BuyBitcoinResponse>;
@@ -2010,6 +2066,7 @@ export class BreezSdk {
2010
2066
  optimizeLeaves(request: OptimizeLeavesRequest): Promise<OptimizeLeavesResponse>;
2011
2067
  parse(input: string): Promise<InputType>;
2012
2068
  prepareLnurlPay(request: PrepareLnurlPayRequest): Promise<PrepareLnurlPayResponse>;
2069
+ prepareSendBatch(request: PrepareSendBatchRequest): Promise<PrepareSendBatchResponse>;
2013
2070
  prepareSendPayment(request: PrepareSendPaymentRequest): Promise<PrepareSendPaymentResponse>;
2014
2071
  prepareUnilateralExit(request: PrepareUnilateralExitRequest): Promise<PrepareUnilateralExitResponse>;
2015
2072
  publishSignedLnurlPayPackage(request: PublishSignedLnurlPayPackageRequest): Promise<PublishSignedLnurlPayResponse>;
@@ -2021,6 +2078,7 @@ export class BreezSdk {
2021
2078
  registerLightningAddress(request: RegisterLightningAddressRequest): Promise<LightningAddressInfo>;
2022
2079
  registerWebhook(request: RegisterWebhookRequest): Promise<RegisterWebhookResponse>;
2023
2080
  removeEventListener(id: string): Promise<boolean>;
2081
+ sendBatch(request: SendBatchRequest): Promise<SendBatchResponse>;
2024
2082
  sendPayment(request: SendPaymentRequest): Promise<SendPaymentResponse>;
2025
2083
  signMessage(request: SignMessageRequest): Promise<SignMessageResponse>;
2026
2084
  syncWallet(request: SyncWalletRequest): Promise<SyncWalletResponse>;
@@ -135,6 +135,14 @@ export class BreezSdk {
135
135
  const ret = wasm.breezsdk_authorizeLightningAddressTransfer(this.__wbg_ptr, request);
136
136
  return ret;
137
137
  }
138
+ /**
139
+ * @param {BuildUnsignedBatchPackageRequest} request
140
+ * @returns {Promise<UnsignedTransferPackage>}
141
+ */
142
+ buildUnsignedBatchPackage(request) {
143
+ const ret = wasm.breezsdk_buildUnsignedBatchPackage(this.__wbg_ptr, request);
144
+ return ret;
145
+ }
138
146
  /**
139
147
  * @param {BuildUnsignedLnurlPayPackageRequest} request
140
148
  * @returns {Promise<UnsignedTransferPackage>}
@@ -379,6 +387,14 @@ export class BreezSdk {
379
387
  const ret = wasm.breezsdk_prepareLnurlPay(this.__wbg_ptr, request);
380
388
  return ret;
381
389
  }
390
+ /**
391
+ * @param {PrepareSendBatchRequest} request
392
+ * @returns {Promise<PrepareSendBatchResponse>}
393
+ */
394
+ prepareSendBatch(request) {
395
+ const ret = wasm.breezsdk_prepareSendBatch(this.__wbg_ptr, request);
396
+ return ret;
397
+ }
382
398
  /**
383
399
  * @param {PrepareSendPaymentRequest} request
384
400
  * @returns {Promise<PrepareSendPaymentResponse>}
@@ -467,6 +483,14 @@ export class BreezSdk {
467
483
  const ret = wasm.breezsdk_removeEventListener(this.__wbg_ptr, ptr0, len0);
468
484
  return ret;
469
485
  }
486
+ /**
487
+ * @param {SendBatchRequest} request
488
+ * @returns {Promise<SendBatchResponse>}
489
+ */
490
+ sendBatch(request) {
491
+ const ret = wasm.breezsdk_sendBatch(this.__wbg_ptr, request);
492
+ return ret;
493
+ }
470
494
  /**
471
495
  * @param {SendPaymentRequest} request
472
496
  * @returns {Promise<SendPaymentResponse>}
@@ -2195,8 +2219,8 @@ export function __wbg_createMysqlTreeStoreWithPool_4c6bcff518c7f9c4() { return h
2195
2219
  const ret = createMysqlTreeStoreWithPool(arg0, getArrayU8FromWasm0(arg1, arg2), arg3, arg4, arg5 !== 0);
2196
2220
  return ret;
2197
2221
  }, arguments); }
2198
- export function __wbg_createPasskey_5ceae054474c582a() { return handleError(function (arg0, arg1) {
2199
- const ret = arg0.createPasskey(arg1);
2222
+ export function __wbg_createPasskey_37eb4d30fdaf2a3f() { return handleError(function (arg0, arg1, arg2) {
2223
+ const ret = arg0.createPasskey(arg1, arg2);
2200
2224
  return ret;
2201
2225
  }, arguments); }
2202
2226
  export function __wbg_createPostgresPool_3c396c7ab2f0eab2() { return handleError(function (arg0) {
@@ -3063,38 +3087,28 @@ export function __wbg_require_b4edbdcf3e2a1ef0() { return handleError(function (
3063
3087
  const ret = module.require;
3064
3088
  return ret;
3065
3089
  }, arguments); }
3066
- export function __wbg_reserveTokenOutputsByOutpoints_a18be5f9fb4ab30a() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {
3090
+ export function __wbg_reserveTokenOutputsByOutpoints_2b3aa01becdba378() { return handleError(function (arg0, arg1, arg2, arg3) {
3067
3091
  let deferred0_0;
3068
3092
  let deferred0_1;
3069
- let deferred1_0;
3070
- let deferred1_1;
3071
3093
  try {
3072
- deferred0_0 = arg1;
3073
- deferred0_1 = arg2;
3074
- deferred1_0 = arg4;
3075
- deferred1_1 = arg5;
3076
- const ret = arg0.reserveTokenOutputsByOutpoints(getStringFromWasm0(arg1, arg2), arg3, getStringFromWasm0(arg4, arg5));
3094
+ deferred0_0 = arg2;
3095
+ deferred0_1 = arg3;
3096
+ const ret = arg0.reserveTokenOutputsByOutpoints(arg1, getStringFromWasm0(arg2, arg3));
3077
3097
  return ret;
3078
3098
  } finally {
3079
3099
  wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
3080
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
3081
3100
  }
3082
3101
  }, arguments); }
3083
- export function __wbg_reserveTokenOutputs_233990fbd0ce963a() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
3102
+ export function __wbg_reserveTokenOutputs_17ba3b5fcc91b000() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {
3084
3103
  let deferred0_0;
3085
3104
  let deferred0_1;
3086
- let deferred1_0;
3087
- let deferred1_1;
3088
3105
  try {
3089
- deferred0_0 = arg1;
3090
- deferred0_1 = arg2;
3091
- deferred1_0 = arg4;
3092
- deferred1_1 = arg5;
3093
- const ret = arg0.reserveTokenOutputs(getStringFromWasm0(arg1, arg2), arg3, getStringFromWasm0(arg4, arg5), arg6, arg7);
3106
+ deferred0_0 = arg2;
3107
+ deferred0_1 = arg3;
3108
+ const ret = arg0.reserveTokenOutputs(arg1, getStringFromWasm0(arg2, arg3), arg4, arg5);
3094
3109
  return ret;
3095
3110
  } finally {
3096
3111
  wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
3097
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
3098
3112
  }
3099
3113
  }, arguments); }
3100
3114
  export function __wbg_resolve_9feb5d906ca62419(arg0) {
@@ -3108,17 +3122,9 @@ export function __wbg_sdkbuilder_new(arg0) {
3108
3122
  const ret = SdkBuilder.__wrap(arg0);
3109
3123
  return ret;
3110
3124
  }
3111
- export function __wbg_selectTokenOutputs_450f20621013b14d() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {
3112
- let deferred0_0;
3113
- let deferred0_1;
3114
- try {
3115
- deferred0_0 = arg1;
3116
- deferred0_1 = arg2;
3117
- const ret = arg0.selectTokenOutputs(getStringFromWasm0(arg1, arg2), arg3, arg4, arg5);
3118
- return ret;
3119
- } finally {
3120
- wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
3121
- }
3125
+ export function __wbg_selectTokenOutputs_378aebd65f866d1b() { return handleError(function (arg0, arg1, arg2, arg3) {
3126
+ const ret = arg0.selectTokenOutputs(arg1, arg2, arg3);
3127
+ return ret;
3122
3128
  }, arguments); }
3123
3129
  export function __wbg_send_0edb796d05cd3239() { return handleError(function (arg0, arg1, arg2) {
3124
3130
  arg0.send(getStringFromWasm0(arg1, arg2));
@@ -3573,27 +3579,27 @@ export function __wbindgen_cast_0000000000000001(arg0, arg1) {
3573
3579
  return ret;
3574
3580
  }
3575
3581
  export function __wbindgen_cast_0000000000000002(arg0, arg1) {
3576
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 389, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3582
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3577
3583
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2);
3578
3584
  return ret;
3579
3585
  }
3580
3586
  export function __wbindgen_cast_0000000000000003(arg0, arg1) {
3581
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("CloseEvent")], shim_idx: 389, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3587
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("CloseEvent")], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3582
3588
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2_2);
3583
3589
  return ret;
3584
3590
  }
3585
3591
  export function __wbindgen_cast_0000000000000004(arg0, arg1) {
3586
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("ErrorEvent")], shim_idx: 389, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3592
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("ErrorEvent")], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3587
3593
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2_3);
3588
3594
  return ret;
3589
3595
  }
3590
3596
  export function __wbindgen_cast_0000000000000005(arg0, arg1) {
3591
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("Event")], shim_idx: 389, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3597
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("Event")], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3592
3598
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2_4);
3593
3599
  return ret;
3594
3600
  }
3595
3601
  export function __wbindgen_cast_0000000000000006(arg0, arg1) {
3596
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("MessageEvent")], shim_idx: 389, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3602
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [NamedExternref("MessageEvent")], shim_idx: 392, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3597
3603
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h3120db8c4a8a92b2_5);
3598
3604
  return ret;
3599
3605
  }
@@ -3618,12 +3624,12 @@ export function __wbindgen_cast_000000000000000a(arg0, arg1) {
3618
3624
  return ret;
3619
3625
  }
3620
3626
  export function __wbindgen_cast_000000000000000b(arg0, arg1) {
3621
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 394, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3627
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 397, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3622
3628
  const ret = makeMutClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h1d6669a7b693932a);
3623
3629
  return ret;
3624
3630
  }
3625
3631
  export function __wbindgen_cast_000000000000000c(arg0, arg1) {
3626
- // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 425, ret: Unit, inner_ret: Some(Unit) }, mutable: false }) -> Externref`.
3632
+ // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [], shim_idx: 427, ret: Unit, inner_ret: Some(Unit) }, mutable: false }) -> Externref`.
3627
3633
  const ret = makeClosure(arg0, arg1, wasm_bindgen__convert__closures_____invoke__h0fa3f876e31d2a3e);
3628
3634
  return ret;
3629
3635
  }
@@ -21,6 +21,7 @@ export const bitcoinchainservicehandle_recommendedFees: (a: number) => any;
21
21
  export const breezsdk_addContact: (a: number, b: any) => any;
22
22
  export const breezsdk_addEventListener: (a: number, b: any) => any;
23
23
  export const breezsdk_authorizeLightningAddressTransfer: (a: number, b: any) => any;
24
+ export const breezsdk_buildUnsignedBatchPackage: (a: number, b: any) => any;
24
25
  export const breezsdk_buildUnsignedLnurlPayPackage: (a: number, b: any) => any;
25
26
  export const breezsdk_buildUnsignedTransferPackage: (a: number, b: any) => any;
26
27
  export const breezsdk_buyBitcoin: (a: number, b: any) => any;
@@ -52,6 +53,7 @@ export const breezsdk_lnurlWithdraw: (a: number, b: any) => any;
52
53
  export const breezsdk_optimizeLeaves: (a: number, b: any) => any;
53
54
  export const breezsdk_parse: (a: number, b: number, c: number) => any;
54
55
  export const breezsdk_prepareLnurlPay: (a: number, b: any) => any;
56
+ export const breezsdk_prepareSendBatch: (a: number, b: any) => any;
55
57
  export const breezsdk_prepareSendPayment: (a: number, b: any) => any;
56
58
  export const breezsdk_prepareUnilateralExit: (a: number, b: any) => any;
57
59
  export const breezsdk_publishSignedLnurlPayPackage: (a: number, b: any) => any;
@@ -63,6 +65,7 @@ export const breezsdk_refundPendingConversions: (a: number) => any;
63
65
  export const breezsdk_registerLightningAddress: (a: number, b: any) => any;
64
66
  export const breezsdk_registerWebhook: (a: number, b: any) => any;
65
67
  export const breezsdk_removeEventListener: (a: number, b: number, c: number) => any;
68
+ export const breezsdk_sendBatch: (a: number, b: any) => any;
66
69
  export const breezsdk_sendPayment: (a: number, b: any) => any;
67
70
  export const breezsdk_signMessage: (a: number, b: any) => any;
68
71
  export const breezsdk_syncWallet: (a: number, b: any) => any;
@@ -89,7 +89,7 @@ interface WasmTokenOutputWithPrevOut {
89
89
  }
90
90
 
91
91
  interface WasmTokenOutputs {
92
- metadata: WasmTokenMetadata;
92
+ metadata: WasmTokenMetadata[];
93
93
  outputs: WasmTokenOutputWithPrevOut[];
94
94
  }
95
95
 
@@ -119,26 +119,23 @@ type WasmReservationTarget =
119
119
  | { type: 'maxOutputCount'; value: number };
120
120
 
121
121
  export interface TokenStore {
122
- setTokensOutputs: (tokenOutputs: WasmTokenOutputs[], refreshStartedAtMs: number) => Promise<void>;
122
+ setTokensOutputs: (tokenOutputs: WasmTokenOutputs, refreshStartedAtMs: number) => Promise<void>;
123
123
  listTokensOutputs: () => Promise<WasmTokenOutputsPerStatus[]>;
124
124
  getTokenBalances: () => Promise<WasmTokenBalance[]>;
125
125
  getTokenOutputs: (filter: WasmGetTokenOutputsFilter) => Promise<WasmTokenOutputsPerStatus>;
126
- updateTokenOutputs: (outputsToRemove: [string, number][], outputsToAdd: WasmTokenOutputs | null) => Promise<void>;
126
+ updateTokenOutputs: (outputsToRemove: [string, number][], outputsToAdd: WasmTokenOutputs) => Promise<void>;
127
127
  reserveTokenOutputs: (
128
- tokenIdentifier: string,
129
- target: WasmReservationTarget,
128
+ targets: [string, WasmReservationTarget][],
130
129
  purpose: string,
131
130
  preferredOutputs: WasmTokenOutputWithPrevOut[] | null,
132
131
  selectionStrategy: string | null
133
132
  ) => Promise<WasmTokenOutputsReservation>;
134
133
  selectTokenOutputs: (
135
- tokenIdentifier: string,
136
- target: WasmReservationTarget,
134
+ targets: [string, WasmReservationTarget][],
137
135
  preferredOutputs: WasmTokenOutputWithPrevOut[] | null,
138
136
  selectionStrategy: string | null
139
137
  ) => Promise<WasmTokenOutputs>;
140
138
  reserveTokenOutputsByOutpoints: (
141
- tokenIdentifier: string,
142
139
  outpoints: { prevTxHash: string; prevTxVout: number }[],
143
140
  purpose: string
144
141
  ) => Promise<WasmTokenOutputsReservation>;
@@ -147,6 +144,20 @@ export interface TokenStore {
147
144
  now: () => Promise<number>;
148
145
  }
149
146
 
147
+ /**
148
+ * A created credential, plus the PRF outputs when the browser evaluated
149
+ * them during the create ceremony. `seeds` is null when it did not, so
150
+ * the caller derives through `deriveSeeds`.
151
+ *
152
+ * Seeds returned here must equal what `deriveSeeds` returns for the same
153
+ * salts: the wallet is derived from them either way, so a mismatch means
154
+ * register and sign-in land on different wallets.
155
+ */
156
+ export interface CreatePasskeyOutput {
157
+ credential: PasskeyCredential;
158
+ seeds?: Uint8Array[] | null;
159
+ }
160
+
150
161
  /**
151
162
  * A passkey credential from `register` or `signIn`. `credentialId` is
152
163
  * always set. The attestation fields (`userId`, `aaguid`,
@@ -297,10 +308,14 @@ export interface PrfProvider {
297
308
  * `excludeCredentials` lists already-registered IDs; a match raises
298
309
  * `PasskeyAlreadyExistsError`.
299
310
  *
311
+ * Evaluating PRF for `salts` in the same ceremony returns the seeds on
312
+ * `seeds`, and the caller then needs no assertion. Return `seeds: null`
313
+ * when the authenticator evaluated none, or fewer than one per salt.
314
+ *
300
315
  * @throws `PasskeyAlreadyExistsError` when an entry in
301
316
  * `excludeCredentials` matches a credential already on the device.
302
317
  */
303
- createPasskey?(excludeCredentials: Uint8Array[]): Promise<PasskeyCredential>;
318
+ createPasskey?(excludeCredentials: Uint8Array[], salts: string[]): Promise<CreatePasskeyOutput>;
304
319
 
305
320
  /**
306
321
  * Whether this provider can produce PRF outputs on the current
@@ -488,6 +503,17 @@ export interface AuthorizeTransferRequest {
488
503
  transfereePubkey: string;
489
504
  }
490
505
 
506
+ export interface BatchRecipient {
507
+ paymentRequest: string;
508
+ amount?: bigint;
509
+ tokenIdentifier?: string;
510
+ }
511
+
512
+ export interface BatchTotal {
513
+ tokenIdentifier?: string;
514
+ amount: bigint;
515
+ }
516
+
491
517
  export interface Bip21Details {
492
518
  amountSat?: number;
493
519
  assetId?: string;
@@ -585,6 +611,10 @@ export interface Bolt12OfferDetails {
585
611
  signingPubkey?: string;
586
612
  }
587
613
 
614
+ export interface BuildUnsignedBatchPackageRequest {
615
+ prepareResponse: PrepareSendBatchResponse;
616
+ }
617
+
588
618
  export interface BuildUnsignedLnurlPayPackageRequest {
589
619
  prepareResponse: PrepareLnurlPayResponse;
590
620
  }
@@ -1315,6 +1345,15 @@ export interface PrepareLnurlPayResponse {
1315
1345
  feePolicy: FeePolicy;
1316
1346
  }
1317
1347
 
1348
+ export interface PrepareSendBatchRequest {
1349
+ recipients: BatchRecipient[];
1350
+ }
1351
+
1352
+ export interface PrepareSendBatchResponse {
1353
+ recipients: ResolvedBatchRecipient[];
1354
+ totals: BatchTotal[];
1355
+ }
1356
+
1318
1357
  export interface PrepareSendPaymentRequest {
1319
1358
  paymentRequest: PaymentRequest;
1320
1359
  amount?: bigint;
@@ -1445,6 +1484,12 @@ export interface RegisterWebhookResponse {
1445
1484
  webhookId: string;
1446
1485
  }
1447
1486
 
1487
+ export interface ResolvedBatchRecipient {
1488
+ destination: BatchDestination;
1489
+ amount: bigint;
1490
+ tokenIdentifier?: string;
1491
+ }
1492
+
1448
1493
  export interface RestClient {
1449
1494
  getRequest(url: string, headers?: Record<string, string>): Promise<RestResponse>;
1450
1495
  postRequest(url: string, headers?: Record<string, string>, body?: string): Promise<RestResponse>;
@@ -1464,6 +1509,14 @@ export interface SecretBytes {
1464
1509
  bytes: number[];
1465
1510
  }
1466
1511
 
1512
+ export interface SendBatchRequest {
1513
+ prepareResponse: PrepareSendBatchResponse;
1514
+ }
1515
+
1516
+ export interface SendBatchResponse {
1517
+ payments: Payment[];
1518
+ }
1519
+
1467
1520
  export interface SendOnchainFeeQuote {
1468
1521
  id: string;
1469
1522
  expiresAt: number;
@@ -1822,6 +1875,8 @@ export type AssetFilter = { type: "bitcoin" } | { type: "token"; tokenIdentifier
1822
1875
 
1823
1876
  export type AutoOptimizationEvent = { type: "started"; totalRounds: number } | { type: "roundCompleted"; currentRound: number; totalRounds: number } | { type: "completed" } | { type: "cancelled" } | { type: "failed"; error: string } | { type: "skipped" };
1824
1877
 
1878
+ export type BatchDestination = { type: "sparkAddress"; address: string } | { type: "sparkInvoice"; invoiceDetails: SparkInvoiceDetails };
1879
+
1825
1880
  export type BitcoinNetwork = "bitcoin" | "testnet3" | "testnet4" | "signet" | "regtest";
1826
1881
 
1827
1882
  export type BuildTransferPackageOptions = { type: "bitcoinAddress"; confirmationSpeed: OnchainConfirmationSpeed } | { type: "bolt11Invoice"; preferSpark: boolean; completionTimeoutSecs?: number };
@@ -1906,7 +1961,7 @@ export type ProvisionalPaymentDetails = { type: "bitcoin"; withdrawalAddress: st
1906
1961
 
1907
1962
  export type PublishSignedLnurlPayResponse = { type: "swapCompleted" } | { type: "paymentSent"; response: LnurlPayResponse };
1908
1963
 
1909
- export type PublishSignedTransferPackageResponse = { type: "swapCompleted" } | { type: "paymentSent"; payment: Payment };
1964
+ export type PublishSignedTransferPackageResponse = { type: "swapCompleted" } | { type: "paymentSent"; payment: Payment } | { type: "paymentsSent"; payments: Payment[] };
1910
1965
 
1911
1966
  export type ReceivePaymentMethod = { type: "sparkAddress" } | { type: "sparkInvoice"; amount?: string; tokenIdentifier?: string; expiryTime?: number; description?: string; senderPublicKey?: string } | { type: "bitcoinAddress"; newAddress?: boolean } | { type: "bolt11Invoice"; description: string; amountSats?: number; expirySecs?: number; paymentHash?: string };
1912
1967
 
@@ -1944,7 +1999,7 @@ export type TransferTarget = { type: "spark"; address: string; sparkInvoice?: st
1944
1999
 
1945
2000
  export type UnilateralExitTxKind = "fanOut" | "node" | "refund" | "sweep";
1946
2001
 
1947
- export type UnsignedTransferPackage = { type: "swap"; prepareTransfer: ExternalPrepareTransferRequest; targetAmounts: number[]; amountSat: number; feeSat: number } | { type: "transfer"; prepareTransfer: ExternalPrepareTransferRequest; amountSat: number; feeSat: number; target: TransferTarget } | { type: "token"; prepareTokenTransaction: ExternalPrepareTokenTransactionRequest; tokenContext: number[]; tokenIdentifier: string; amount: string; fee: string; isSwap: boolean };
2002
+ export type UnsignedTransferPackage = { type: "swap"; prepareTransfer: ExternalPrepareTransferRequest; targetAmounts: number[]; amountSat: number; feeSat: number } | { type: "transfer"; prepareTransfer: ExternalPrepareTransferRequest; amountSat: number; feeSat: number; target: TransferTarget } | { type: "token"; prepareTokenTransaction: ExternalPrepareTokenTransactionRequest; tokenContext: number[]; tokenIdentifier: string; amount: string; fee: string; isSwap: boolean } | { type: "tokenBatch"; prepareTokenTransaction: ExternalPrepareTokenTransactionRequest; tokenContext: number[]; totals: BatchTotal[]; isSwap: boolean };
1948
2003
 
1949
2004
  export type UpdateDepositPayload = { type: "claimError"; error: DepositClaimError } | { type: "refund"; refundTxid: string; refundTx: string };
1950
2005
 
@@ -1979,6 +2034,7 @@ export class BreezSdk {
1979
2034
  addContact(request: AddContactRequest): Promise<Contact>;
1980
2035
  addEventListener(listener: EventListener): Promise<string>;
1981
2036
  authorizeLightningAddressTransfer(request: AuthorizeTransferRequest): Promise<TransferAuthorization>;
2037
+ buildUnsignedBatchPackage(request: BuildUnsignedBatchPackageRequest): Promise<UnsignedTransferPackage>;
1982
2038
  buildUnsignedLnurlPayPackage(request: BuildUnsignedLnurlPayPackageRequest): Promise<UnsignedTransferPackage>;
1983
2039
  buildUnsignedTransferPackage(request: BuildUnsignedTransferPackageRequest): Promise<UnsignedTransferPackage>;
1984
2040
  buyBitcoin(request: BuyBitcoinRequest): Promise<BuyBitcoinResponse>;
@@ -2010,6 +2066,7 @@ export class BreezSdk {
2010
2066
  optimizeLeaves(request: OptimizeLeavesRequest): Promise<OptimizeLeavesResponse>;
2011
2067
  parse(input: string): Promise<InputType>;
2012
2068
  prepareLnurlPay(request: PrepareLnurlPayRequest): Promise<PrepareLnurlPayResponse>;
2069
+ prepareSendBatch(request: PrepareSendBatchRequest): Promise<PrepareSendBatchResponse>;
2013
2070
  prepareSendPayment(request: PrepareSendPaymentRequest): Promise<PrepareSendPaymentResponse>;
2014
2071
  prepareUnilateralExit(request: PrepareUnilateralExitRequest): Promise<PrepareUnilateralExitResponse>;
2015
2072
  publishSignedLnurlPayPackage(request: PublishSignedLnurlPayPackageRequest): Promise<PublishSignedLnurlPayResponse>;
@@ -2021,6 +2078,7 @@ export class BreezSdk {
2021
2078
  registerLightningAddress(request: RegisterLightningAddressRequest): Promise<LightningAddressInfo>;
2022
2079
  registerWebhook(request: RegisterWebhookRequest): Promise<RegisterWebhookResponse>;
2023
2080
  removeEventListener(id: string): Promise<boolean>;
2081
+ sendBatch(request: SendBatchRequest): Promise<SendBatchResponse>;
2024
2082
  sendPayment(request: SendPaymentRequest): Promise<SendPaymentResponse>;
2025
2083
  signMessage(request: SignMessageRequest): Promise<SignMessageResponse>;
2026
2084
  syncWallet(request: SyncWalletRequest): Promise<SyncWalletResponse>;