@agicash/breez-sdk-spark 0.12.2-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.
Files changed (49) hide show
  1. package/README.md +126 -0
  2. package/bundler/breez_sdk_spark_wasm.d.ts +1537 -0
  3. package/bundler/breez_sdk_spark_wasm.js +5 -0
  4. package/bundler/breez_sdk_spark_wasm_bg.js +3028 -0
  5. package/bundler/breez_sdk_spark_wasm_bg.wasm +0 -0
  6. package/bundler/breez_sdk_spark_wasm_bg.wasm.d.ts +134 -0
  7. package/bundler/index.d.ts +3 -0
  8. package/bundler/index.js +33 -0
  9. package/bundler/package.json +29 -0
  10. package/bundler/storage/index.js +2331 -0
  11. package/bundler/storage/package.json +12 -0
  12. package/deno/breez_sdk_spark_wasm.d.ts +1537 -0
  13. package/deno/breez_sdk_spark_wasm.js +2782 -0
  14. package/deno/breez_sdk_spark_wasm_bg.wasm +0 -0
  15. package/deno/breez_sdk_spark_wasm_bg.wasm.d.ts +134 -0
  16. package/nodejs/breez_sdk_spark_wasm.d.ts +1537 -0
  17. package/nodejs/breez_sdk_spark_wasm.js +3042 -0
  18. package/nodejs/breez_sdk_spark_wasm_bg.wasm +0 -0
  19. package/nodejs/breez_sdk_spark_wasm_bg.wasm.d.ts +134 -0
  20. package/nodejs/index.d.ts +1 -0
  21. package/nodejs/index.js +52 -0
  22. package/nodejs/index.mjs +24 -0
  23. package/nodejs/package.json +16 -0
  24. package/nodejs/postgres-storage/errors.cjs +19 -0
  25. package/nodejs/postgres-storage/index.cjs +1390 -0
  26. package/nodejs/postgres-storage/migrations.cjs +265 -0
  27. package/nodejs/postgres-storage/package.json +9 -0
  28. package/nodejs/postgres-token-store/errors.cjs +13 -0
  29. package/nodejs/postgres-token-store/index.cjs +857 -0
  30. package/nodejs/postgres-token-store/migrations.cjs +163 -0
  31. package/nodejs/postgres-token-store/package.json +9 -0
  32. package/nodejs/postgres-tree-store/errors.cjs +13 -0
  33. package/nodejs/postgres-tree-store/index.cjs +808 -0
  34. package/nodejs/postgres-tree-store/migrations.cjs +150 -0
  35. package/nodejs/postgres-tree-store/package.json +9 -0
  36. package/nodejs/storage/errors.cjs +19 -0
  37. package/nodejs/storage/index.cjs +1343 -0
  38. package/nodejs/storage/migrations.cjs +417 -0
  39. package/nodejs/storage/package.json +9 -0
  40. package/package.json +45 -0
  41. package/web/breez_sdk_spark_wasm.d.ts +1695 -0
  42. package/web/breez_sdk_spark_wasm.js +2873 -0
  43. package/web/breez_sdk_spark_wasm_bg.wasm +0 -0
  44. package/web/breez_sdk_spark_wasm_bg.wasm.d.ts +134 -0
  45. package/web/index.d.ts +3 -0
  46. package/web/index.js +33 -0
  47. package/web/package.json +28 -0
  48. package/web/storage/index.js +2331 -0
  49. package/web/storage/package.json +12 -0
@@ -0,0 +1,1537 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Creates a default PostgreSQL storage configuration with sensible defaults.
5
+ *
6
+ * Default values (from pg.Pool):
7
+ * - `maxPoolSize`: 10
8
+ * - `createTimeoutSecs`: 0 (no timeout)
9
+ * - `recycleTimeoutSecs`: 10 (10 seconds idle before disconnect)
10
+ */
11
+ export function defaultPostgresStorageConfig(connection_string: string): PostgresStorageConfig;
12
+ export function defaultExternalSigner(mnemonic: string, passphrase: string | null | undefined, network: Network, key_set_config?: KeySetConfig | null): DefaultSigner;
13
+ export function defaultConfig(network: Network): Config;
14
+ /**
15
+ * Creates a default external signer from a mnemonic phrase.
16
+ *
17
+ * This creates a signer that can be used with `connectWithSigner` or `SdkBuilder.newWithSigner`.
18
+ */
19
+ export function getSparkStatus(): Promise<SparkStatus>;
20
+ export function initLogging(logger: Logger, filter?: string | null): Promise<void>;
21
+ export function connect(request: ConnectRequest): Promise<BreezSdk>;
22
+ export function connectWithSigner(config: Config, signer: ExternalSigner, storage_dir: string): Promise<BreezSdk>;
23
+ /**
24
+ * Entry point invoked by JavaScript in a worker.
25
+ */
26
+ export function task_worker_entry_point(ptr: number): void;
27
+ /**
28
+ * The `ReadableStreamType` enum.
29
+ *
30
+ * *This API requires the following crate features to be activated: `ReadableStreamType`*
31
+ */
32
+ type ReadableStreamType = "bytes";
33
+
34
+ /** Serialized tree node. Key fields used by store implementations: id, status, value. */
35
+ interface TreeNode {
36
+ id: string;
37
+ tree_id: string;
38
+ value: number;
39
+ status: string;
40
+ [key: string]: unknown;
41
+ }
42
+
43
+ interface Leaves {
44
+ available: TreeNode[];
45
+ notAvailable: TreeNode[];
46
+ availableMissingFromOperators: TreeNode[];
47
+ reservedForPayment: TreeNode[];
48
+ reservedForSwap: TreeNode[];
49
+ }
50
+
51
+ interface LeavesReservation {
52
+ id: string;
53
+ leaves: TreeNode[];
54
+ }
55
+
56
+ type TargetAmounts =
57
+ | { type: 'amountAndFee'; amountSats: number; feeSats: number | null }
58
+ | { type: 'exactDenominations'; denominations: number[] };
59
+
60
+ type ReserveResult =
61
+ | { type: 'success'; reservation: LeavesReservation }
62
+ | { type: 'insufficientFunds' }
63
+ | { type: 'waitForPending'; needed: number; available: number; pending: number };
64
+
65
+ export interface TreeStore {
66
+ addLeaves: (leaves: TreeNode[]) => Promise<void>;
67
+ getLeaves: () => Promise<Leaves>;
68
+ setLeaves: (leaves: TreeNode[], missingLeaves: TreeNode[], refreshStartedAtMs: number) => Promise<void>;
69
+ cancelReservation: (id: string) => Promise<void>;
70
+ finalizeReservation: (id: string, newLeaves: TreeNode[] | null) => Promise<void>;
71
+ tryReserveLeaves: (targetAmounts: TargetAmounts | null, exactOnly: boolean, purpose: string) => Promise<ReserveResult>;
72
+ now: () => Promise<number>;
73
+ updateReservation: (reservationId: string, reservedLeaves: TreeNode[], changeLeaves: TreeNode[]) => Promise<LeavesReservation>;
74
+ }
75
+
76
+ /**
77
+ * Configuration for PostgreSQL storage connection pool.
78
+ */
79
+ export interface PostgresStorageConfig {
80
+ /**
81
+ * PostgreSQL connection string (URI format).
82
+ */
83
+ connectionString: string;
84
+ /**
85
+ * Maximum number of connections in the pool.
86
+ */
87
+ maxPoolSize: number;
88
+ /**
89
+ * Timeout in seconds for establishing a new connection (0 = no timeout).
90
+ */
91
+ createTimeoutSecs: number;
92
+ /**
93
+ * Timeout in seconds before recycling an idle connection.
94
+ */
95
+ recycleTimeoutSecs: number;
96
+ }
97
+
98
+
99
+ interface WasmTokenMetadata {
100
+ identifier: string;
101
+ issuerPublicKey: string;
102
+ name: string;
103
+ ticker: string;
104
+ decimals: number;
105
+ maxSupply: string;
106
+ isFreezable: boolean;
107
+ creationEntityPublicKey: string | null;
108
+ }
109
+
110
+ interface WasmTokenOutput {
111
+ id: string;
112
+ ownerPublicKey: string;
113
+ revocationCommitment: string;
114
+ withdrawBondSats: number;
115
+ withdrawRelativeBlockLocktime: number;
116
+ tokenPublicKey: string | null;
117
+ tokenIdentifier: string;
118
+ tokenAmount: string;
119
+ }
120
+
121
+ interface WasmTokenOutputWithPrevOut {
122
+ output: WasmTokenOutput;
123
+ prevTxHash: string;
124
+ prevTxVout: number;
125
+ }
126
+
127
+ interface WasmTokenOutputs {
128
+ metadata: WasmTokenMetadata;
129
+ outputs: WasmTokenOutputWithPrevOut[];
130
+ }
131
+
132
+ interface WasmTokenOutputsPerStatus {
133
+ metadata: WasmTokenMetadata;
134
+ available: WasmTokenOutputWithPrevOut[];
135
+ reservedForPayment: WasmTokenOutputWithPrevOut[];
136
+ reservedForSwap: WasmTokenOutputWithPrevOut[];
137
+ }
138
+
139
+ interface WasmTokenOutputsReservation {
140
+ id: string;
141
+ tokenOutputs: WasmTokenOutputs;
142
+ }
143
+
144
+ type WasmGetTokenOutputsFilter =
145
+ | { type: 'identifier'; identifier: string }
146
+ | { type: 'issuerPublicKey'; issuerPublicKey: string };
147
+
148
+ type WasmReservationTarget =
149
+ | { type: 'minTotalValue'; value: string }
150
+ | { type: 'maxOutputCount'; value: number };
151
+
152
+ export interface TokenStore {
153
+ setTokensOutputs: (tokenOutputs: WasmTokenOutputs[], refreshStartedAtMs: number) => Promise<void>;
154
+ listTokensOutputs: () => Promise<WasmTokenOutputsPerStatus[]>;
155
+ getTokenOutputs: (filter: WasmGetTokenOutputsFilter) => Promise<WasmTokenOutputsPerStatus>;
156
+ insertTokenOutputs: (tokenOutputs: WasmTokenOutputs) => Promise<void>;
157
+ reserveTokenOutputs: (
158
+ tokenIdentifier: string,
159
+ target: WasmReservationTarget,
160
+ purpose: string,
161
+ preferredOutputs: WasmTokenOutputWithPrevOut[] | null,
162
+ selectionStrategy: string | null
163
+ ) => Promise<WasmTokenOutputsReservation>;
164
+ cancelReservation: (id: string) => Promise<void>;
165
+ finalizeReservation: (id: string) => Promise<void>;
166
+ now: () => Promise<number>;
167
+ }
168
+
169
+ export interface EventListener {
170
+ onEvent: (e: SdkEvent) => void;
171
+ }
172
+
173
+ export interface Logger {
174
+ log: (l: LogEntry) => void;
175
+ }
176
+
177
+ export interface RestClient {
178
+ getRequest(url: string, headers?: Record<string, string>): Promise<RestResponse>;
179
+ postRequest(url: string, headers?: Record<string, string>, body?: string): Promise<RestResponse>;
180
+ deleteRequest(url: string, headers?: Record<string, string>, body?: string): Promise<RestResponse>;
181
+ }
182
+
183
+ export interface RestResponse {
184
+ status: number;
185
+ body: string;
186
+ }
187
+
188
+ export interface FiatService {
189
+ fetchFiatCurrencies(): Promise<FiatCurrency[]>;
190
+ fetchFiatRates(): Promise<Rate[]>;
191
+ }
192
+
193
+ export interface BitcoinChainService {
194
+ getAddressUtxos(address: string): Promise<Utxo[]>;
195
+ getTransactionStatus(txid: string): Promise<TxStatus>;
196
+ getTransactionHex(txid: string): Promise<string>;
197
+ broadcastTransaction(tx: string): Promise<void>;
198
+ recommendedFees(): Promise<RecommendedFees>;
199
+ }
200
+
201
+ export interface TxStatus {
202
+ confirmed: boolean;
203
+ blockHeight?: number;
204
+ blockTime?: number;
205
+ }
206
+
207
+ export interface RecommendedFees {
208
+ fastestFee: number;
209
+ halfHourFee: number;
210
+ hourFee: number;
211
+ economyFee: number;
212
+ minimumFee: number;
213
+ }
214
+
215
+ export type ChainApiType = "esplora" | "mempoolSpace";
216
+
217
+ export interface Utxo {
218
+ txid: string;
219
+ vout: number;
220
+ value: number;
221
+ status: TxStatus;
222
+ }
223
+
224
+ export interface PaymentObserver {
225
+ beforeSend: (payments: ProvisionalPayment[]) => Promise<void>;
226
+ }
227
+
228
+ export interface RefundDepositResponse {
229
+ txId: string;
230
+ txHex: string;
231
+ }
232
+
233
+ export interface LnurlErrorDetails {
234
+ reason: string;
235
+ }
236
+
237
+ export interface Contact {
238
+ id: string;
239
+ name: string;
240
+ paymentIdentifier: string;
241
+ createdAt: number;
242
+ updatedAt: number;
243
+ }
244
+
245
+ export interface ConversionInfo {
246
+ poolId: string;
247
+ conversionId: string;
248
+ status: ConversionStatus;
249
+ fee?: string;
250
+ purpose?: ConversionPurpose;
251
+ amountAdjustment?: AmountAdjustmentReason;
252
+ }
253
+
254
+ export interface SparkInvoiceDetails {
255
+ invoice: string;
256
+ identityPublicKey: string;
257
+ network: BitcoinNetwork;
258
+ amount?: string;
259
+ tokenIdentifier?: string;
260
+ expiryTime?: number;
261
+ description?: string;
262
+ senderPublicKey?: string;
263
+ }
264
+
265
+ export interface ReceivePaymentRequest {
266
+ paymentMethod: ReceivePaymentMethod;
267
+ }
268
+
269
+ export interface ConversionEstimate {
270
+ options: ConversionOptions;
271
+ amount: bigint;
272
+ fee: bigint;
273
+ amountAdjustment?: AmountAdjustmentReason;
274
+ }
275
+
276
+ export interface LnurlWithdrawRequestDetails {
277
+ callback: string;
278
+ k1: string;
279
+ defaultDescription: string;
280
+ minWithdrawable: number;
281
+ maxWithdrawable: number;
282
+ }
283
+
284
+ export interface ConversionDetails {
285
+ status: ConversionStatus;
286
+ from?: ConversionStep;
287
+ to?: ConversionStep;
288
+ }
289
+
290
+ export interface Rate {
291
+ coin: string;
292
+ value: number;
293
+ }
294
+
295
+ export interface ListPaymentsResponse {
296
+ payments: Payment[];
297
+ }
298
+
299
+ export interface Credentials {
300
+ username: string;
301
+ password: string;
302
+ }
303
+
304
+ export interface Symbol {
305
+ grapheme?: string;
306
+ template?: string;
307
+ rtl?: boolean;
308
+ position?: number;
309
+ }
310
+
311
+ export interface SparkSigningOperator {
312
+ id: number;
313
+ identifier: string;
314
+ address: string;
315
+ identityPublicKey: string;
316
+ }
317
+
318
+ export interface Payment {
319
+ id: string;
320
+ paymentType: PaymentType;
321
+ status: PaymentStatus;
322
+ amount: bigint;
323
+ fees: bigint;
324
+ timestamp: number;
325
+ method: PaymentMethod;
326
+ details?: PaymentDetails;
327
+ conversionDetails?: ConversionDetails;
328
+ }
329
+
330
+ export interface LocalizedName {
331
+ locale: string;
332
+ name: string;
333
+ }
334
+
335
+ export interface CheckLightningAddressRequest {
336
+ username: string;
337
+ }
338
+
339
+ export interface Bolt11RouteHintHop {
340
+ srcNodeId: string;
341
+ shortChannelId: string;
342
+ feesBaseMsat: number;
343
+ feesProportionalMillionths: number;
344
+ cltvExpiryDelta: number;
345
+ htlcMinimumMsat?: number;
346
+ htlcMaximumMsat?: number;
347
+ }
348
+
349
+ export interface ConversionStep {
350
+ paymentId: string;
351
+ amount: bigint;
352
+ fee: bigint;
353
+ method: PaymentMethod;
354
+ tokenMetadata?: TokenMetadata;
355
+ amountAdjustment?: AmountAdjustmentReason;
356
+ }
357
+
358
+ export type KeySetType = "default" | "taproot" | "nativeSegwit" | "wrappedSegwit" | "legacy";
359
+
360
+ export type PaymentDetails = { type: "spark"; invoiceDetails?: SparkInvoicePaymentDetails; htlcDetails?: SparkHtlcDetails; conversionInfo?: ConversionInfo } | { type: "token"; metadata: TokenMetadata; txHash: string; txType: TokenTransactionType; invoiceDetails?: SparkInvoicePaymentDetails; conversionInfo?: ConversionInfo } | { type: "lightning"; description?: string; invoice: string; destinationPubkey: string; htlcDetails: SparkHtlcDetails; lnurlPayInfo?: LnurlPayInfo; lnurlWithdrawInfo?: LnurlWithdrawInfo; lnurlReceiveMetadata?: LnurlReceiveMetadata } | { type: "withdraw"; txId: string } | { type: "deposit"; txId: string };
361
+
362
+ export interface LnurlPayInfo {
363
+ lnAddress?: string;
364
+ comment?: string;
365
+ domain?: string;
366
+ metadata?: string;
367
+ processedSuccessAction?: SuccessActionProcessed;
368
+ rawSuccessAction?: SuccessAction;
369
+ }
370
+
371
+ export interface FetchConversionLimitsResponse {
372
+ minFromAmount?: bigint;
373
+ minToAmount?: bigint;
374
+ }
375
+
376
+ export interface LogEntry {
377
+ line: string;
378
+ level: string;
379
+ }
380
+
381
+ export interface ProvisionalPayment {
382
+ paymentId: string;
383
+ amount: bigint;
384
+ details: ProvisionalPaymentDetails;
385
+ }
386
+
387
+ export type UpdateDepositPayload = { type: "claimError"; error: DepositClaimError } | { type: "refund"; refundTxid: string; refundTx: string };
388
+
389
+ export interface ListFiatRatesResponse {
390
+ rates: Rate[];
391
+ }
392
+
393
+ export interface UpdateContactRequest {
394
+ id: string;
395
+ name: string;
396
+ paymentIdentifier: string;
397
+ }
398
+
399
+ export interface ClaimHtlcPaymentRequest {
400
+ preimage: string;
401
+ }
402
+
403
+ export interface Bolt12InvoiceRequestDetails {}
404
+
405
+ export type ServiceStatus = "operational" | "degraded" | "partial" | "unknown" | "major";
406
+
407
+ export interface AesSuccessActionData {
408
+ description: string;
409
+ ciphertext: string;
410
+ iv: string;
411
+ }
412
+
413
+ export type ConversionStatus = "pending" | "completed" | "failed" | "refundNeeded" | "refunded";
414
+
415
+ export type TokenTransactionType = "transfer" | "mint" | "burn";
416
+
417
+ export interface SignMessageRequest {
418
+ message: string;
419
+ compact: boolean;
420
+ }
421
+
422
+ export type OptimizationEvent = { type: "started"; totalRounds: number } | { type: "roundCompleted"; currentRound: number; totalRounds: number } | { type: "completed" } | { type: "cancelled" } | { type: "failed"; error: string } | { type: "skipped" };
423
+
424
+ export interface SilentPaymentAddressDetails {
425
+ address: string;
426
+ network: BitcoinNetwork;
427
+ source: PaymentRequestSource;
428
+ }
429
+
430
+ export interface LightningAddressInfo {
431
+ description: string;
432
+ lightningAddress: string;
433
+ lnurl: LnurlInfo;
434
+ username: string;
435
+ }
436
+
437
+ export type Fee = { type: "fixed"; amount: number } | { type: "rate"; satPerVbyte: number };
438
+
439
+ export type ConversionType = { type: "fromBitcoin" } | { type: "toBitcoin"; fromTokenIdentifier: string };
440
+
441
+ export interface ClaimDepositRequest {
442
+ txid: string;
443
+ vout: number;
444
+ maxFee?: MaxFee;
445
+ }
446
+
447
+ export interface AesSuccessActionDataDecrypted {
448
+ description: string;
449
+ plaintext: string;
450
+ }
451
+
452
+ export type ProvisionalPaymentDetails = { type: "bitcoin"; withdrawalAddress: string } | { type: "lightning"; invoice: string } | { type: "spark"; payRequest: string } | { type: "token"; tokenId: string; payRequest: string };
453
+
454
+ export interface RefundDepositRequest {
455
+ txid: string;
456
+ vout: number;
457
+ destinationAddress: string;
458
+ fee: Fee;
459
+ }
460
+
461
+ export interface GetTokensMetadataRequest {
462
+ tokenIdentifiers: string[];
463
+ }
464
+
465
+ export interface LightningAddressDetails {
466
+ address: string;
467
+ payRequest: LnurlPayRequestDetails;
468
+ }
469
+
470
+ export interface LocaleOverrides {
471
+ locale: string;
472
+ spacing?: number;
473
+ symbol: Symbol;
474
+ }
475
+
476
+ export interface Bip21Details {
477
+ amountSat?: number;
478
+ assetId?: string;
479
+ uri: string;
480
+ extras: Bip21Extra[];
481
+ label?: string;
482
+ message?: string;
483
+ paymentMethods: InputType[];
484
+ }
485
+
486
+ export interface Bolt12Invoice {
487
+ invoice: string;
488
+ source: PaymentRequestSource;
489
+ }
490
+
491
+ export type SendPaymentOptions = { type: "bitcoinAddress"; confirmationSpeed: OnchainConfirmationSpeed } | { type: "bolt11Invoice"; preferSpark: boolean; completionTimeoutSecs?: number } | { type: "sparkAddress"; htlcOptions?: SparkHtlcOptions };
492
+
493
+ export interface OutgoingChange {
494
+ change: RecordChange;
495
+ parent?: Record;
496
+ }
497
+
498
+ export interface GetPaymentRequest {
499
+ paymentId: string;
500
+ }
501
+
502
+ export type Amount = { type: "bitcoin"; amountMsat: number } | { type: "currency"; iso4217Code: string; fractionalAmount: number };
503
+
504
+ export interface BuyBitcoinResponse {
505
+ url: string;
506
+ }
507
+
508
+ export type MaxFee = { type: "fixed"; amount: number } | { type: "rate"; satPerVbyte: number } | { type: "networkRecommended"; leewaySatPerVbyte: number };
509
+
510
+ export interface SyncWalletResponse {}
511
+
512
+ export type BitcoinNetwork = "bitcoin" | "testnet3" | "testnet4" | "signet" | "regtest";
513
+
514
+ export interface StorageListPaymentsRequest {
515
+ typeFilter?: PaymentType[];
516
+ statusFilter?: PaymentStatus[];
517
+ assetFilter?: AssetFilter;
518
+ paymentDetailsFilter?: StoragePaymentDetailsFilter[];
519
+ fromTimestamp?: number;
520
+ toTimestamp?: number;
521
+ offset?: number;
522
+ limit?: number;
523
+ sortAscending?: boolean;
524
+ }
525
+
526
+ export interface TokenBalance {
527
+ balance: bigint;
528
+ tokenMetadata: TokenMetadata;
529
+ }
530
+
531
+ export interface ConversionOptions {
532
+ conversionType: ConversionType;
533
+ maxSlippageBps?: number;
534
+ completionTimeoutSecs?: number;
535
+ }
536
+
537
+ export type LnurlCallbackStatus = { type: "ok" } | { type: "errorStatus"; errorDetails: LnurlErrorDetails };
538
+
539
+ export interface SendOnchainSpeedFeeQuote {
540
+ userFeeSat: number;
541
+ l1BroadcastFeeSat: number;
542
+ }
543
+
544
+ export interface CheckMessageResponse {
545
+ isValid: boolean;
546
+ }
547
+
548
+ export interface SparkHtlcOptions {
549
+ paymentHash: string;
550
+ expiryDurationSecs: number;
551
+ }
552
+
553
+ export interface UnversionedRecordChange {
554
+ id: RecordId;
555
+ schemaVersion: string;
556
+ updatedFields: Map<string, string>;
557
+ }
558
+
559
+ export interface ConnectRequest {
560
+ config: Config;
561
+ seed: Seed;
562
+ storageDir: string;
563
+ }
564
+
565
+ export interface UserSettings {
566
+ sparkPrivateModeEnabled: boolean;
567
+ stableBalanceActiveLabel?: string;
568
+ }
569
+
570
+ export interface DepositInfo {
571
+ txid: string;
572
+ vout: number;
573
+ amountSats: number;
574
+ isMature: boolean;
575
+ refundTx?: string;
576
+ refundTxId?: string;
577
+ claimError?: DepositClaimError;
578
+ }
579
+
580
+ export interface ListFiatCurrenciesResponse {
581
+ currencies: FiatCurrency[];
582
+ }
583
+
584
+ export type SparkHtlcStatus = "waitingForPreimage" | "preimageShared" | "returned";
585
+
586
+ export interface MessageSuccessActionData {
587
+ message: string;
588
+ }
589
+
590
+ export interface RegisterWebhookResponse {
591
+ webhookId: string;
592
+ }
593
+
594
+ export interface SignMessageResponse {
595
+ pubkey: string;
596
+ signature: string;
597
+ }
598
+
599
+ export interface Bolt12OfferDetails {
600
+ absoluteExpiry?: number;
601
+ chains: string[];
602
+ description?: string;
603
+ issuer?: string;
604
+ minAmount?: Amount;
605
+ offer: Bolt12Offer;
606
+ paths: Bolt12OfferBlindedPath[];
607
+ signingPubkey?: string;
608
+ }
609
+
610
+ export interface Bip21Extra {
611
+ key: string;
612
+ value: string;
613
+ }
614
+
615
+ export interface Config {
616
+ apiKey?: string;
617
+ network: Network;
618
+ syncIntervalSecs: number;
619
+ maxDepositClaimFee?: MaxFee;
620
+ lnurlDomain?: string;
621
+ preferSparkOverLightning: boolean;
622
+ externalInputParsers?: ExternalInputParser[];
623
+ useDefaultExternalInputParsers: boolean;
624
+ realTimeSyncServerUrl?: string;
625
+ privateEnabledDefault: boolean;
626
+ optimizationConfig: OptimizationConfig;
627
+ stableBalanceConfig?: StableBalanceConfig;
628
+ /**
629
+ * Maximum number of concurrent transfer claims.
630
+ *
631
+ * Controls how many pending Spark transfers can be claimed in parallel.
632
+ * Default is 4. Increase for server environments with high incoming
633
+ * payment volume to improve throughput.
634
+ */
635
+ maxConcurrentClaims: number;
636
+ sparkConfig?: SparkConfig;
637
+ }
638
+
639
+ export interface OptimizationProgress {
640
+ isRunning: boolean;
641
+ currentRound: number;
642
+ totalRounds: number;
643
+ }
644
+
645
+ export interface SparkSspConfig {
646
+ baseUrl: string;
647
+ identityPublicKey: string;
648
+ schemaEndpoint?: string;
649
+ }
650
+
651
+ export interface GetInfoResponse {
652
+ identityPubkey: string;
653
+ balanceSats: number;
654
+ tokenBalances: Map<string, TokenBalance>;
655
+ }
656
+
657
+ export interface Bolt12InvoiceDetails {
658
+ amountMsat: number;
659
+ invoice: Bolt12Invoice;
660
+ }
661
+
662
+ export type Network = "mainnet" | "regtest";
663
+
664
+ export type PaymentStatus = "completed" | "pending" | "failed";
665
+
666
+ export interface PaymentRequestSource {
667
+ bip21Uri?: string;
668
+ bip353Address?: string;
669
+ }
670
+
671
+ export interface ListPaymentsRequest {
672
+ typeFilter?: PaymentType[];
673
+ statusFilter?: PaymentStatus[];
674
+ assetFilter?: AssetFilter;
675
+ paymentDetailsFilter?: PaymentDetailsFilter[];
676
+ fromTimestamp?: number;
677
+ toTimestamp?: number;
678
+ offset?: number;
679
+ limit?: number;
680
+ sortAscending?: boolean;
681
+ }
682
+
683
+ export interface ExternalInputParser {
684
+ providerId: string;
685
+ inputRegex: string;
686
+ parserUrl: string;
687
+ }
688
+
689
+ export interface SyncWalletRequest {}
690
+
691
+ export interface ListUnclaimedDepositsRequest {}
692
+
693
+ export type OnchainConfirmationSpeed = "fast" | "medium" | "slow";
694
+
695
+ export type SendPaymentMethod = { type: "bitcoinAddress"; address: BitcoinAddressDetails; feeQuote: SendOnchainFeeQuote } | { type: "bolt11Invoice"; invoiceDetails: Bolt11InvoiceDetails; sparkTransferFeeSats?: number; lightningFeeSats: number } | { type: "sparkAddress"; address: string; fee: string; tokenIdentifier?: string } | { type: "sparkInvoice"; sparkInvoiceDetails: SparkInvoiceDetails; fee: string; tokenIdentifier?: string };
696
+
697
+ export interface LnurlWithdrawInfo {
698
+ withdrawUrl: string;
699
+ }
700
+
701
+ export type FeePolicy = "feesExcluded" | "feesIncluded";
702
+
703
+ export interface AddContactRequest {
704
+ name: string;
705
+ paymentIdentifier: string;
706
+ }
707
+
708
+ export interface UnregisterWebhookRequest {
709
+ webhookId: string;
710
+ }
711
+
712
+ export interface SendPaymentResponse {
713
+ payment: Payment;
714
+ }
715
+
716
+ export type BuyBitcoinRequest = { type: "moonpay"; lockedAmountSat?: number; redirectUrl?: string } | { type: "cashApp"; amountSats?: number };
717
+
718
+ export interface PrepareLnurlPayResponse {
719
+ amountSats: number;
720
+ comment?: string;
721
+ payRequest: LnurlPayRequestDetails;
722
+ feeSats: number;
723
+ invoiceDetails: Bolt11InvoiceDetails;
724
+ successAction?: SuccessAction;
725
+ conversionEstimate?: ConversionEstimate;
726
+ feePolicy: FeePolicy;
727
+ }
728
+
729
+ export interface GetTokensMetadataResponse {
730
+ tokensMetadata: TokenMetadata[];
731
+ }
732
+
733
+ export interface Bolt12Offer {
734
+ offer: string;
735
+ source: PaymentRequestSource;
736
+ }
737
+
738
+ export interface Webhook {
739
+ id: string;
740
+ url: string;
741
+ eventTypes: WebhookEventType[];
742
+ }
743
+
744
+ export interface ClaimDepositResponse {
745
+ payment: Payment;
746
+ }
747
+
748
+ export interface LnurlPayRequestDetails {
749
+ callback: string;
750
+ minSendable: number;
751
+ maxSendable: number;
752
+ metadataStr: string;
753
+ commentAllowed: number;
754
+ domain: string;
755
+ url: string;
756
+ address?: string;
757
+ allowsNostr?: boolean;
758
+ nostrPubkey?: string;
759
+ }
760
+
761
+ export type PaymentDetailsFilter = { type: "spark"; htlcStatus?: SparkHtlcStatus[]; conversionRefundNeeded?: boolean } | { type: "token"; conversionRefundNeeded?: boolean; txHash?: string; txType?: TokenTransactionType } | { type: "lightning"; htlcStatus?: SparkHtlcStatus[] };
762
+
763
+ 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; receiverIdentityPubkey?: string; descriptionHash?: string };
764
+
765
+ export interface ListContactsRequest {
766
+ offset?: number;
767
+ limit?: number;
768
+ }
769
+
770
+ export interface Bolt11InvoiceDetails {
771
+ amountMsat?: number;
772
+ description?: string;
773
+ descriptionHash?: string;
774
+ expiry: number;
775
+ invoice: Bolt11Invoice;
776
+ minFinalCltvExpiryDelta: number;
777
+ network: BitcoinNetwork;
778
+ payeePubkey: string;
779
+ paymentHash: string;
780
+ paymentSecret: string;
781
+ routingHints: Bolt11RouteHint[];
782
+ timestamp: number;
783
+ }
784
+
785
+ export interface LnurlWithdrawResponse {
786
+ paymentRequest: string;
787
+ payment?: Payment;
788
+ }
789
+
790
+ export interface FiatCurrency {
791
+ id: string;
792
+ info: CurrencyInfo;
793
+ }
794
+
795
+ export interface LnurlReceiveMetadata {
796
+ nostrZapRequest?: string;
797
+ nostrZapReceipt?: string;
798
+ senderComment?: string;
799
+ }
800
+
801
+ export interface RegisterWebhookRequest {
802
+ url: string;
803
+ secret: string;
804
+ eventTypes: WebhookEventType[];
805
+ }
806
+
807
+ export interface TokenMetadata {
808
+ identifier: string;
809
+ issuerPublicKey: string;
810
+ name: string;
811
+ ticker: string;
812
+ decimals: number;
813
+ maxSupply: string;
814
+ isFreezable: boolean;
815
+ }
816
+
817
+ export type AmountAdjustmentReason = "flooredToMinLimit" | "increasedToAvoidDust";
818
+
819
+ export interface LnurlPayRequest {
820
+ prepareResponse: PrepareLnurlPayResponse;
821
+ idempotencyKey?: string;
822
+ }
823
+
824
+ export interface SparkConfig {
825
+ coordinatorIdentifier: string;
826
+ threshold: number;
827
+ signingOperators: SparkSigningOperator[];
828
+ sspConfig: SparkSspConfig;
829
+ expectedWithdrawBondSats: number;
830
+ expectedWithdrawRelativeBlockLocktime: number;
831
+ }
832
+
833
+ export type StableBalanceActiveLabel = { type: "set"; label: string } | { type: "unset" };
834
+
835
+ export interface SparkHtlcDetails {
836
+ paymentHash: string;
837
+ preimage?: string;
838
+ expiryTime: number;
839
+ status: SparkHtlcStatus;
840
+ }
841
+
842
+ export interface RegisterLightningAddressRequest {
843
+ username: string;
844
+ description?: string;
845
+ }
846
+
847
+ export interface PrepareSendPaymentResponse {
848
+ paymentMethod: SendPaymentMethod;
849
+ amount: bigint;
850
+ tokenIdentifier?: string;
851
+ conversionEstimate?: ConversionEstimate;
852
+ feePolicy: FeePolicy;
853
+ }
854
+
855
+ export interface GetInfoRequest {
856
+ ensureSynced?: boolean;
857
+ }
858
+
859
+ export interface CheckMessageRequest {
860
+ message: string;
861
+ pubkey: string;
862
+ signature: string;
863
+ }
864
+
865
+ export type StoragePaymentDetailsFilter = { type: "spark"; htlcStatus?: SparkHtlcStatus[]; conversionRefundNeeded?: boolean } | { type: "token"; conversionRefundNeeded?: boolean; txHash?: string; txType?: TokenTransactionType } | { type: "lightning"; htlcStatus?: SparkHtlcStatus[] };
866
+
867
+ export interface SetLnurlMetadataItem {
868
+ paymentHash: string;
869
+ senderComment?: string;
870
+ nostrZapRequest?: string;
871
+ nostrZapReceipt?: string;
872
+ }
873
+
874
+ export interface Bolt11RouteHint {
875
+ hops: Bolt11RouteHintHop[];
876
+ }
877
+
878
+ export interface PrepareSendPaymentRequest {
879
+ paymentRequest: string;
880
+ amount?: bigint;
881
+ tokenIdentifier?: string;
882
+ conversionOptions?: ConversionOptions;
883
+ feePolicy?: FeePolicy;
884
+ }
885
+
886
+ export interface SparkInvoicePaymentDetails {
887
+ description?: string;
888
+ invoice: string;
889
+ }
890
+
891
+ export type PaymentMethod = "lightning" | "spark" | "token" | "deposit" | "withdraw" | "unknown";
892
+
893
+ export type AesSuccessActionDataResult = { type: "decrypted"; data: AesSuccessActionDataDecrypted } | { type: "errorStatus"; reason: string };
894
+
895
+ export interface ReceivePaymentResponse {
896
+ paymentRequest: string;
897
+ fee: bigint;
898
+ }
899
+
900
+ export interface Bolt11Invoice {
901
+ bolt11: string;
902
+ source: PaymentRequestSource;
903
+ }
904
+
905
+ export type SdkEvent = { type: "synced" } | { type: "unclaimedDeposits"; unclaimedDeposits: DepositInfo[] } | { type: "claimedDeposits"; claimedDeposits: DepositInfo[] } | { type: "paymentSucceeded"; payment: Payment } | { type: "paymentPending"; payment: Payment } | { type: "paymentFailed"; payment: Payment } | { type: "optimization"; optimizationEvent: OptimizationEvent } | { type: "lightningAddressChanged"; lightningAddress?: LightningAddressInfo } | { type: "newDeposits"; newDeposits: DepositInfo[] };
906
+
907
+ export interface CurrencyInfo {
908
+ name: string;
909
+ fractionSize: number;
910
+ spacing?: number;
911
+ symbol?: Symbol;
912
+ uniqSymbol?: Symbol;
913
+ localizedName: LocalizedName[];
914
+ localeOverrides: LocaleOverrides[];
915
+ }
916
+
917
+ export interface UrlSuccessActionData {
918
+ description: string;
919
+ url: string;
920
+ matchesCallbackDomain: boolean;
921
+ }
922
+
923
+ export type AssetFilter = { type: "bitcoin" } | { type: "token"; tokenIdentifier?: string };
924
+
925
+ export interface SendPaymentRequest {
926
+ prepareResponse: PrepareSendPaymentResponse;
927
+ options?: SendPaymentOptions;
928
+ idempotencyKey?: string;
929
+ }
930
+
931
+ export interface LnurlPayResponse {
932
+ payment: Payment;
933
+ successAction?: SuccessActionProcessed;
934
+ }
935
+
936
+ export type SuccessAction = { type: "aes"; data: AesSuccessActionData } | { type: "message"; data: MessageSuccessActionData } | { type: "url"; data: UrlSuccessActionData };
937
+
938
+ export interface SparkAddressDetails {
939
+ address: string;
940
+ identityPublicKey: string;
941
+ network: BitcoinNetwork;
942
+ source: PaymentRequestSource;
943
+ }
944
+
945
+ export interface RecordId {
946
+ type: string;
947
+ dataId: string;
948
+ }
949
+
950
+ export interface PaymentMetadata {
951
+ parentPaymentId?: string;
952
+ lnurlPayInfo?: LnurlPayInfo;
953
+ lnurlWithdrawInfo?: LnurlWithdrawInfo;
954
+ lnurlDescription?: string;
955
+ conversionInfo?: ConversionInfo;
956
+ conversionStatus?: ConversionStatus;
957
+ }
958
+
959
+ export interface ListUnclaimedDepositsResponse {
960
+ deposits: DepositInfo[];
961
+ }
962
+
963
+ export interface LnurlWithdrawRequest {
964
+ amountSats: number;
965
+ withdrawRequest: LnurlWithdrawRequestDetails;
966
+ completionTimeoutSecs?: number;
967
+ }
968
+
969
+ export interface RecordChange {
970
+ id: RecordId;
971
+ schemaVersion: string;
972
+ updatedFields: Map<string, string>;
973
+ localRevision: number;
974
+ }
975
+
976
+ export interface KeySetConfig {
977
+ keySetType: KeySetType;
978
+ useAddressIndex: boolean;
979
+ accountNumber?: number;
980
+ }
981
+
982
+ export type WebhookEventType = { type: "lightningReceiveFinished" } | { type: "lightningSendFinished" } | { type: "coopExitFinished" } | { type: "staticDepositFinished" } | ({ type: "unknown" } & string);
983
+
984
+ export interface StableBalanceToken {
985
+ label: string;
986
+ tokenIdentifier: string;
987
+ }
988
+
989
+ export type PaymentType = "send" | "receive";
990
+
991
+ export interface Record {
992
+ id: RecordId;
993
+ revision: number;
994
+ schemaVersion: string;
995
+ data: Map<string, string>;
996
+ }
997
+
998
+ export interface StableBalanceConfig {
999
+ tokens: StableBalanceToken[];
1000
+ defaultActiveLabel?: string;
1001
+ thresholdSats?: number;
1002
+ maxSlippageBps?: number;
1003
+ }
1004
+
1005
+ export interface UpdateUserSettingsRequest {
1006
+ sparkPrivateModeEnabled?: boolean;
1007
+ stableBalanceActiveLabel?: StableBalanceActiveLabel;
1008
+ }
1009
+
1010
+ export interface LnurlAuthRequestDetails {
1011
+ k1: string;
1012
+ action?: string;
1013
+ domain: string;
1014
+ url: string;
1015
+ }
1016
+
1017
+ export interface Bolt12OfferBlindedPath {
1018
+ blindedHops: string[];
1019
+ }
1020
+
1021
+ export interface OptimizationConfig {
1022
+ autoEnabled: boolean;
1023
+ multiplicity: number;
1024
+ }
1025
+
1026
+ export type DepositClaimError = { type: "maxDepositClaimFeeExceeded"; tx: string; vout: number; maxFee?: Fee; requiredFeeSats: number; requiredFeeRateSatPerVbyte: number } | { type: "missingUtxo"; tx: string; vout: number } | { type: "generic"; message: string };
1027
+
1028
+ export type SuccessActionProcessed = { type: "aes"; result: AesSuccessActionDataResult } | { type: "message"; data: MessageSuccessActionData } | { type: "url"; data: UrlSuccessActionData };
1029
+
1030
+ export interface LnurlInfo {
1031
+ url: string;
1032
+ bech32: string;
1033
+ }
1034
+
1035
+ export interface ClaimHtlcPaymentResponse {
1036
+ payment: Payment;
1037
+ }
1038
+
1039
+ export interface GetPaymentResponse {
1040
+ payment: Payment;
1041
+ }
1042
+
1043
+ export interface SparkStatus {
1044
+ status: ServiceStatus;
1045
+ lastUpdated: number;
1046
+ }
1047
+
1048
+ export type ConversionPurpose = { type: "ongoingPayment"; paymentRequest: string } | { type: "selfTransfer" } | { type: "autoConversion" };
1049
+
1050
+ export interface FetchConversionLimitsRequest {
1051
+ conversionType: ConversionType;
1052
+ tokenIdentifier?: string;
1053
+ }
1054
+
1055
+ export interface PrepareLnurlPayRequest {
1056
+ amountSats: number;
1057
+ comment?: string;
1058
+ payRequest: LnurlPayRequestDetails;
1059
+ validateSuccessActionUrl?: boolean;
1060
+ conversionOptions?: ConversionOptions;
1061
+ feePolicy?: FeePolicy;
1062
+ }
1063
+
1064
+ export type InputType = ({ type: "bitcoinAddress" } & BitcoinAddressDetails) | ({ type: "bolt11Invoice" } & Bolt11InvoiceDetails) | ({ type: "bolt12Invoice" } & Bolt12InvoiceDetails) | ({ type: "bolt12Offer" } & Bolt12OfferDetails) | ({ type: "lightningAddress" } & LightningAddressDetails) | ({ type: "lnurlPay" } & LnurlPayRequestDetails) | ({ type: "silentPaymentAddress" } & SilentPaymentAddressDetails) | ({ type: "lnurlAuth" } & LnurlAuthRequestDetails) | ({ type: "url" } & string) | ({ type: "bip21" } & Bip21Details) | ({ type: "bolt12InvoiceRequest" } & Bolt12InvoiceRequestDetails) | ({ type: "lnurlWithdraw" } & LnurlWithdrawRequestDetails) | ({ type: "sparkAddress" } & SparkAddressDetails) | ({ type: "sparkInvoice" } & SparkInvoiceDetails);
1065
+
1066
+ export interface BitcoinAddressDetails {
1067
+ address: string;
1068
+ network: BitcoinNetwork;
1069
+ source: PaymentRequestSource;
1070
+ }
1071
+
1072
+ export interface IncomingChange {
1073
+ newState: Record;
1074
+ oldState?: Record;
1075
+ }
1076
+
1077
+ export type Seed = { type: "mnemonic"; mnemonic: string; passphrase?: string } | ({ type: "entropy" } & number[]);
1078
+
1079
+ export interface SendOnchainFeeQuote {
1080
+ id: string;
1081
+ expiresAt: number;
1082
+ speedFast: SendOnchainSpeedFeeQuote;
1083
+ speedMedium: SendOnchainSpeedFeeQuote;
1084
+ speedSlow: SendOnchainSpeedFeeQuote;
1085
+ }
1086
+
1087
+ /**
1088
+ * Interface for passkey PRF (Pseudo-Random Function) operations.
1089
+ *
1090
+ * Implement this interface to provide passkey PRF functionality for seedless wallet restore.
1091
+ *
1092
+ * @example
1093
+ * ```typescript
1094
+ * class BrowserPasskeyPrfProvider implements PasskeyPrfProvider {
1095
+ * async derivePrfSeed(salt: string): Promise<Uint8Array> {
1096
+ * const credential = await navigator.credentials.get({
1097
+ * publicKey: {
1098
+ * challenge: new Uint8Array(32),
1099
+ * rpId: window.location.hostname,
1100
+ * allowCredentials: [], // or specific credential IDs
1101
+ * extensions: {
1102
+ * prf: { eval: { first: new TextEncoder().encode(salt) } }
1103
+ * }
1104
+ * }
1105
+ * });
1106
+ * const results = credential.getClientExtensionResults();
1107
+ * return new Uint8Array(results.prf.results.first);
1108
+ * }
1109
+ *
1110
+ * async isPrfAvailable(): Promise<boolean> {
1111
+ * return window.PublicKeyCredential?.isUserVerifyingPlatformAuthenticatorAvailable?.() ?? false;
1112
+ * }
1113
+ * }
1114
+ * ```
1115
+ */
1116
+ export interface PasskeyPrfProvider {
1117
+ /**
1118
+ * Derive a 32-byte seed from passkey PRF with the given salt.
1119
+ *
1120
+ * The platform authenticates the user via passkey and evaluates the PRF extension.
1121
+ * The salt is used as input to the PRF to derive a deterministic output.
1122
+ *
1123
+ * @param salt - The salt string to use for PRF evaluation
1124
+ * @returns A Promise resolving to the 32-byte PRF output
1125
+ * @throws If authentication fails or PRF is not supported
1126
+ */
1127
+ derivePrfSeed(salt: string): Promise<Uint8Array>;
1128
+
1129
+ /**
1130
+ * Check if a PRF-capable passkey is available on this device.
1131
+ *
1132
+ * This allows applications to gracefully degrade if passkey PRF is not supported.
1133
+ *
1134
+ * @returns A Promise resolving to true if PRF-capable passkey is available
1135
+ */
1136
+ isPrfAvailable(): Promise<boolean>;
1137
+ }
1138
+
1139
+ export interface CreateIssuerTokenRequest {
1140
+ name: string;
1141
+ ticker: string;
1142
+ decimals: number;
1143
+ isFreezable: boolean;
1144
+ maxSupply: bigint;
1145
+ }
1146
+
1147
+ export interface FreezeIssuerTokenResponse {
1148
+ impactedOutputIds: string[];
1149
+ impactedTokenAmount: bigint;
1150
+ }
1151
+
1152
+ export interface FreezeIssuerTokenRequest {
1153
+ address: string;
1154
+ }
1155
+
1156
+ export interface BurnIssuerTokenRequest {
1157
+ amount: bigint;
1158
+ }
1159
+
1160
+ export interface UnfreezeIssuerTokenResponse {
1161
+ impactedOutputIds: string[];
1162
+ impactedTokenAmount: bigint;
1163
+ }
1164
+
1165
+ export interface UnfreezeIssuerTokenRequest {
1166
+ address: string;
1167
+ }
1168
+
1169
+ export interface MintIssuerTokenRequest {
1170
+ amount: bigint;
1171
+ }
1172
+
1173
+ export interface ExternalSigner {
1174
+ identityPublicKey(): PublicKeyBytes;
1175
+ derivePublicKey(path: string): Promise<PublicKeyBytes>;
1176
+ signEcdsa(message: MessageBytes, path: string): Promise<EcdsaSignatureBytes>;
1177
+ signEcdsaRecoverable(message: MessageBytes, path: string): Promise<RecoverableEcdsaSignatureBytes>;
1178
+ encryptEcies(message: Uint8Array, path: string): Promise<Uint8Array>;
1179
+ decryptEcies(message: Uint8Array, path: string): Promise<Uint8Array>;
1180
+ signHashSchnorr(hash: Uint8Array, path: string): Promise<SchnorrSignatureBytes>;
1181
+ generateRandomSigningCommitment(): Promise<ExternalFrostCommitments>;
1182
+ getPublicKeyForNode(id: ExternalTreeNodeId): Promise<PublicKeyBytes>;
1183
+ generateRandomSecret(): Promise<ExternalEncryptedSecret>;
1184
+ staticDepositSecretEncrypted(index: number): Promise<ExternalSecretSource>;
1185
+ staticDepositSecret(index: number): Promise<SecretBytes>;
1186
+ staticDepositSigningKey(index: number): Promise<PublicKeyBytes>;
1187
+ subtractSecrets(signingKey: ExternalSecretSource, newSigningKey: ExternalSecretSource): Promise<ExternalSecretSource>;
1188
+ splitSecretWithProofs(secret: ExternalSecretToSplit, threshold: number, numShares: number): Promise<ExternalVerifiableSecretShare[]>;
1189
+ encryptPrivateKeyForReceiver(privateKey: ExternalEncryptedSecret, receiverPublicKey: PublicKeyBytes): Promise<Uint8Array>;
1190
+ publicKeyFromSecret(privateKey: ExternalSecretSource): Promise<PublicKeyBytes>;
1191
+ signFrost(request: ExternalSignFrostRequest): Promise<ExternalFrostSignatureShare>;
1192
+ aggregateFrost(request: ExternalAggregateFrostRequest): Promise<ExternalFrostSignature>;
1193
+ hmacSha256(message: Uint8Array, path: string): Promise<HashedMessageBytes>;
1194
+ }
1195
+
1196
+ export interface ExternalVerifiableSecretShare {
1197
+ secretShare: ExternalSecretShare;
1198
+ proofs: number[][];
1199
+ }
1200
+
1201
+ export interface SchnorrSignatureBytes {
1202
+ bytes: number[];
1203
+ }
1204
+
1205
+ export interface ExternalSecretShare {
1206
+ threshold: number;
1207
+ index: ExternalScalar;
1208
+ share: ExternalScalar;
1209
+ }
1210
+
1211
+ export interface EcdsaSignatureBytes {
1212
+ bytes: number[];
1213
+ }
1214
+
1215
+ export interface IdentifierSignaturePair {
1216
+ identifier: ExternalIdentifier;
1217
+ signature: ExternalFrostSignatureShare;
1218
+ }
1219
+
1220
+ export interface HashedMessageBytes {
1221
+ bytes: number[];
1222
+ }
1223
+
1224
+ export interface ExternalScalar {
1225
+ bytes: number[];
1226
+ }
1227
+
1228
+ export interface ExternalTreeNodeId {
1229
+ id: string;
1230
+ }
1231
+
1232
+ export interface ExternalEncryptedSecret {
1233
+ ciphertext: number[];
1234
+ }
1235
+
1236
+ export interface ExternalFrostCommitments {
1237
+ hidingCommitment: number[];
1238
+ bindingCommitment: number[];
1239
+ noncesCiphertext: number[];
1240
+ }
1241
+
1242
+ export interface SecretBytes {
1243
+ bytes: number[];
1244
+ }
1245
+
1246
+ export interface RecoverableEcdsaSignatureBytes {
1247
+ bytes: number[];
1248
+ }
1249
+
1250
+ export interface ExternalSigningCommitments {
1251
+ hiding: number[];
1252
+ binding: number[];
1253
+ }
1254
+
1255
+ export type ExternalSecretSource = { type: "derived"; nodeId: ExternalTreeNodeId } | { type: "encrypted"; key: ExternalEncryptedSecret };
1256
+
1257
+ export interface IdentifierCommitmentPair {
1258
+ identifier: ExternalIdentifier;
1259
+ commitment: ExternalSigningCommitments;
1260
+ }
1261
+
1262
+ export interface MessageBytes {
1263
+ bytes: number[];
1264
+ }
1265
+
1266
+ export interface ExternalSignFrostRequest {
1267
+ message: number[];
1268
+ publicKey: number[];
1269
+ secret: ExternalSecretSource;
1270
+ verifyingKey: number[];
1271
+ selfNonceCommitment: ExternalFrostCommitments;
1272
+ statechainCommitments: IdentifierCommitmentPair[];
1273
+ adaptorPublicKey?: number[];
1274
+ }
1275
+
1276
+ export interface IdentifierPublicKeyPair {
1277
+ identifier: ExternalIdentifier;
1278
+ publicKey: number[];
1279
+ }
1280
+
1281
+ export interface ExternalFrostSignature {
1282
+ bytes: number[];
1283
+ }
1284
+
1285
+ export interface ExternalFrostSignatureShare {
1286
+ bytes: number[];
1287
+ }
1288
+
1289
+ export interface ExternalAggregateFrostRequest {
1290
+ message: number[];
1291
+ statechainSignatures: IdentifierSignaturePair[];
1292
+ statechainPublicKeys: IdentifierPublicKeyPair[];
1293
+ verifyingKey: number[];
1294
+ statechainCommitments: IdentifierCommitmentPair[];
1295
+ selfCommitment: ExternalSigningCommitments;
1296
+ publicKey: number[];
1297
+ selfSignature: ExternalFrostSignatureShare;
1298
+ adaptorPublicKey?: number[];
1299
+ }
1300
+
1301
+ export interface ExternalIdentifier {
1302
+ bytes: number[];
1303
+ }
1304
+
1305
+ export interface PublicKeyBytes {
1306
+ bytes: number[];
1307
+ }
1308
+
1309
+ export type ExternalSecretToSplit = { type: "secretSource"; source: ExternalSecretSource } | { type: "preimage"; data: number[] };
1310
+
1311
+ /**
1312
+ * A wallet derived from a passkey.
1313
+ */
1314
+ export interface Wallet {
1315
+ /**
1316
+ * The derived seed.
1317
+ */
1318
+ seed: Seed;
1319
+ /**
1320
+ * The label used for derivation.
1321
+ */
1322
+ label: string;
1323
+ }
1324
+
1325
+ /**
1326
+ * Nostr relay configuration for passkey label operations.
1327
+ *
1328
+ * Used by `Passkey.listLabels` and `Passkey.storeLabel`.
1329
+ */
1330
+ export interface NostrRelayConfig {
1331
+ /**
1332
+ * Optional Breez API key for authenticated access to the Breez relay.
1333
+ * When provided, the Breez relay is added and NIP-42 authentication is enabled.
1334
+ */
1335
+ breezApiKey?: string;
1336
+ /**
1337
+ * Connection timeout in seconds. Defaults to 30 when `None`.
1338
+ */
1339
+ timeoutSecs?: number;
1340
+ }
1341
+
1342
+ export interface Storage {
1343
+ getCachedItem: (key: string) => Promise<string | null>;
1344
+ setCachedItem: (key: string, value: string) => Promise<void>;
1345
+ deleteCachedItem: (key: string) => Promise<void>;
1346
+ listPayments: (request: StorageListPaymentsRequest) => Promise<Payment[]>;
1347
+ insertPayment: (payment: Payment) => Promise<void>;
1348
+ insertPaymentMetadata: (paymentId: string, metadata: PaymentMetadata) => Promise<void>;
1349
+ getPaymentById: (id: string) => Promise<Payment>;
1350
+ getPaymentByInvoice: (invoice: string) => Promise<Payment>;
1351
+ addDeposit: (txid: string, vout: number, amount_sats: number, isMature: boolean) => Promise<void>;
1352
+ deleteDeposit: (txid: string, vout: number) => Promise<void>;
1353
+ listDeposits: () => Promise<DepositInfo[]>;
1354
+ updateDeposit: (txid: string, vout: number, payload: UpdateDepositPayload) => Promise<void>;
1355
+ setLnurlMetadata: (metadata: SetLnurlMetadataItem[]) => Promise<void>;
1356
+ getPaymentsByParentIds: (parentPaymentIds: string[]) => Promise<{ [parentId: string]: RelatedPayment[] }>;
1357
+ listContacts: (request: ListContactsRequest) => Promise<Contact[]>;
1358
+ getContact: (id: string) => Promise<Contact>;
1359
+ insertContact: (contact: Contact) => Promise<void>;
1360
+ deleteContact: (id: string) => Promise<void>;
1361
+ syncAddOutgoingChange: (record: UnversionedRecordChange) => Promise<number>;
1362
+ syncCompleteOutgoingSync: (record: Record) => Promise<void>;
1363
+ syncGetPendingOutgoingChanges: (limit: number) => Promise<OutgoingChange[]>;
1364
+ syncGetLastRevision: () => Promise<number>;
1365
+ syncInsertIncomingRecords: (records: Record[]) => Promise<void>;
1366
+ syncDeleteIncomingRecord: (record: Record) => Promise<void>;
1367
+ syncGetIncomingRecords: (limit: number) => Promise<IncomingChange[]>;
1368
+ syncGetLatestOutgoingChange: () => Promise<OutgoingChange | null>;
1369
+ syncUpdateRecordFromIncoming: (record: Record) => Promise<void>;
1370
+ }
1371
+
1372
+ export class BreezSdk {
1373
+ private constructor();
1374
+ free(): void;
1375
+ disconnect(): Promise<void>;
1376
+ lnurlAuth(request_data: LnurlAuthRequestDetails): Promise<LnurlCallbackStatus>;
1377
+ addContact(request: AddContactRequest): Promise<Contact>;
1378
+ buyBitcoin(request: BuyBitcoinRequest): Promise<BuyBitcoinResponse>;
1379
+ getPayment(request: GetPaymentRequest): Promise<GetPaymentResponse>;
1380
+ syncWallet(request: SyncWalletRequest): Promise<SyncWalletResponse>;
1381
+ sendPayment(request: SendPaymentRequest): Promise<SendPaymentResponse>;
1382
+ signMessage(request: SignMessageRequest): Promise<SignMessageResponse>;
1383
+ checkMessage(request: CheckMessageRequest): Promise<CheckMessageResponse>;
1384
+ claimDeposit(request: ClaimDepositRequest): Promise<ClaimDepositResponse>;
1385
+ listContacts(request: ListContactsRequest): Promise<Contact[]>;
1386
+ listPayments(request: ListPaymentsRequest): Promise<ListPaymentsResponse>;
1387
+ listWebhooks(): Promise<Webhook[]>;
1388
+ deleteContact(id: string): Promise<void>;
1389
+ lnurlWithdraw(request: LnurlWithdrawRequest): Promise<LnurlWithdrawResponse>;
1390
+ refundDeposit(request: RefundDepositRequest): Promise<RefundDepositResponse>;
1391
+ updateContact(request: UpdateContactRequest): Promise<Contact>;
1392
+ listFiatRates(): Promise<ListFiatRatesResponse>;
1393
+ receivePayment(request: ReceivePaymentRequest): Promise<ReceivePaymentResponse>;
1394
+ getTokenIssuer(): TokenIssuer;
1395
+ recommendedFees(): Promise<RecommendedFees>;
1396
+ registerWebhook(request: RegisterWebhookRequest): Promise<RegisterWebhookResponse>;
1397
+ getUserSettings(): Promise<UserSettings>;
1398
+ prepareLnurlPay(request: PrepareLnurlPayRequest): Promise<PrepareLnurlPayResponse>;
1399
+ addEventListener(listener: EventListener): Promise<string>;
1400
+ claimHtlcPayment(request: ClaimHtlcPaymentRequest): Promise<ClaimHtlcPaymentResponse>;
1401
+ unregisterWebhook(request: UnregisterWebhookRequest): Promise<void>;
1402
+ getTokensMetadata(request: GetTokensMetadataRequest): Promise<GetTokensMetadataResponse>;
1403
+ listFiatCurrencies(): Promise<ListFiatCurrenciesResponse>;
1404
+ prepareSendPayment(request: PrepareSendPaymentRequest): Promise<PrepareSendPaymentResponse>;
1405
+ updateUserSettings(request: UpdateUserSettingsRequest): Promise<void>;
1406
+ getLightningAddress(): Promise<LightningAddressInfo | undefined>;
1407
+ removeEventListener(id: string): Promise<boolean>;
1408
+ fetchConversionLimits(request: FetchConversionLimitsRequest): Promise<FetchConversionLimitsResponse>;
1409
+ listUnclaimedDeposits(request: ListUnclaimedDepositsRequest): Promise<ListUnclaimedDepositsResponse>;
1410
+ startLeafOptimization(): Promise<void>;
1411
+ cancelLeafOptimization(): Promise<void>;
1412
+ deleteLightningAddress(): Promise<void>;
1413
+ registerLightningAddress(request: RegisterLightningAddressRequest): Promise<LightningAddressInfo>;
1414
+ getLeafOptimizationProgress(): OptimizationProgress;
1415
+ checkLightningAddressAvailable(request: CheckLightningAddressRequest): Promise<boolean>;
1416
+ parse(input: string): Promise<InputType>;
1417
+ getInfo(request: GetInfoRequest): Promise<GetInfoResponse>;
1418
+ lnurlPay(request: LnurlPayRequest): Promise<LnurlPayResponse>;
1419
+ }
1420
+ /**
1421
+ * A default signer implementation that wraps the core SDK's ExternalSigner.
1422
+ * This is returned by `defaultExternalSigner` and can be passed to `connectWithSigner`.
1423
+ */
1424
+ export class DefaultSigner {
1425
+ private constructor();
1426
+ free(): void;
1427
+ signEcdsa(message: MessageBytes, path: string): Promise<EcdsaSignatureBytes>;
1428
+ signFrost(request: ExternalSignFrostRequest): Promise<ExternalFrostSignatureShare>;
1429
+ hmacSha256(message: Uint8Array, path: string): Promise<HashedMessageBytes>;
1430
+ decryptEcies(message: Uint8Array, path: string): Promise<Uint8Array>;
1431
+ encryptEcies(message: Uint8Array, path: string): Promise<Uint8Array>;
1432
+ aggregateFrost(request: ExternalAggregateFrostRequest): Promise<ExternalFrostSignature>;
1433
+ subtractSecrets(signing_key: ExternalSecretSource, new_signing_key: ExternalSecretSource): Promise<ExternalSecretSource>;
1434
+ derivePublicKey(path: string): Promise<PublicKeyBytes>;
1435
+ signHashSchnorr(hash: Uint8Array, path: string): Promise<SchnorrSignatureBytes>;
1436
+ identityPublicKey(): PublicKeyBytes;
1437
+ staticDepositSecret(index: number): Promise<SecretBytes>;
1438
+ generateRandomSecret(): Promise<ExternalEncryptedSecret>;
1439
+ publicKeyFromSecret(private_key: ExternalSecretSource): Promise<PublicKeyBytes>;
1440
+ signEcdsaRecoverable(message: MessageBytes, path: string): Promise<RecoverableEcdsaSignatureBytes>;
1441
+ getPublicKeyForNode(id: ExternalTreeNodeId): Promise<PublicKeyBytes>;
1442
+ splitSecretWithProofs(secret: ExternalSecretToSplit, threshold: number, num_shares: number): Promise<ExternalVerifiableSecretShare[]>;
1443
+ staticDepositSigningKey(index: number): Promise<PublicKeyBytes>;
1444
+ encryptPrivateKeyForReceiver(private_key: ExternalEncryptedSecret, receiver_public_key: PublicKeyBytes): Promise<Uint8Array>;
1445
+ staticDepositSecretEncrypted(index: number): Promise<ExternalSecretSource>;
1446
+ generateRandomSigningCommitment(): Promise<ExternalFrostCommitments>;
1447
+ }
1448
+ export class IntoUnderlyingByteSource {
1449
+ private constructor();
1450
+ free(): void;
1451
+ pull(controller: ReadableByteStreamController): Promise<any>;
1452
+ start(controller: ReadableByteStreamController): void;
1453
+ cancel(): void;
1454
+ readonly autoAllocateChunkSize: number;
1455
+ readonly type: ReadableStreamType;
1456
+ }
1457
+ export class IntoUnderlyingSink {
1458
+ private constructor();
1459
+ free(): void;
1460
+ abort(reason: any): Promise<any>;
1461
+ close(): Promise<any>;
1462
+ write(chunk: any): Promise<any>;
1463
+ }
1464
+ export class IntoUnderlyingSource {
1465
+ private constructor();
1466
+ free(): void;
1467
+ pull(controller: ReadableStreamDefaultController): Promise<any>;
1468
+ cancel(): void;
1469
+ }
1470
+ /**
1471
+ * Passkey-based wallet operations using WebAuthn PRF extension.
1472
+ *
1473
+ * Wraps a `PasskeyPrfProvider` and optional relay configuration to provide
1474
+ * wallet derivation and label management via Nostr relays.
1475
+ */
1476
+ export class Passkey {
1477
+ free(): void;
1478
+ /**
1479
+ * Derive a wallet for a given label.
1480
+ *
1481
+ * Uses the passkey PRF to derive a `Wallet` containing the seed and resolved label.
1482
+ *
1483
+ * @param label - Optional label string (defaults to "Default")
1484
+ */
1485
+ getWallet(label?: string | null): Promise<Wallet>;
1486
+ /**
1487
+ * List all labels published to Nostr for this passkey's identity.
1488
+ *
1489
+ * Requires 1 PRF call (for Nostr identity derivation).
1490
+ */
1491
+ listLabels(): Promise<string[]>;
1492
+ /**
1493
+ * Publish a label to Nostr relays for this passkey's identity.
1494
+ *
1495
+ * Idempotent: if the label already exists, it is not published again.
1496
+ * Requires 1 PRF call.
1497
+ */
1498
+ storeLabel(label: string): Promise<void>;
1499
+ /**
1500
+ * Check if passkey PRF is available on this device.
1501
+ */
1502
+ isAvailable(): Promise<boolean>;
1503
+ /**
1504
+ * Create a new `Passkey` instance.
1505
+ *
1506
+ * @param prfProvider - Platform implementation of passkey PRF operations
1507
+ * @param relayConfig - Optional configuration for Nostr relay connections
1508
+ */
1509
+ constructor(prf_provider: PasskeyPrfProvider, relay_config?: NostrRelayConfig | null);
1510
+ }
1511
+ export class SdkBuilder {
1512
+ private constructor();
1513
+ free(): void;
1514
+ withKeySet(config: KeySetConfig): SdkBuilder;
1515
+ withStorage(storage: Storage): SdkBuilder;
1516
+ static newWithSigner(config: Config, signer: ExternalSigner): SdkBuilder;
1517
+ withFiatService(fiat_service: FiatService): SdkBuilder;
1518
+ withLnurlClient(lnurl_client: RestClient): SdkBuilder;
1519
+ withChainService(chain_service: BitcoinChainService): SdkBuilder;
1520
+ withDefaultStorage(storage_dir: string): Promise<SdkBuilder>;
1521
+ withPaymentObserver(payment_observer: PaymentObserver): SdkBuilder;
1522
+ withPostgresBackend(config: PostgresStorageConfig): SdkBuilder;
1523
+ withRestChainService(url: string, api_type: ChainApiType, credentials?: Credentials | null): SdkBuilder;
1524
+ static new(config: Config, seed: Seed): SdkBuilder;
1525
+ build(): Promise<BreezSdk>;
1526
+ }
1527
+ export class TokenIssuer {
1528
+ private constructor();
1529
+ free(): void;
1530
+ burnIssuerToken(request: BurnIssuerTokenRequest): Promise<Payment>;
1531
+ mintIssuerToken(request: MintIssuerTokenRequest): Promise<Payment>;
1532
+ createIssuerToken(request: CreateIssuerTokenRequest): Promise<TokenMetadata>;
1533
+ freezeIssuerToken(request: FreezeIssuerTokenRequest): Promise<FreezeIssuerTokenResponse>;
1534
+ unfreezeIssuerToken(request: UnfreezeIssuerTokenRequest): Promise<UnfreezeIssuerTokenResponse>;
1535
+ getIssuerTokenBalance(): Promise<TokenBalance>;
1536
+ getIssuerTokenMetadata(): Promise<TokenMetadata>;
1537
+ }