@1sat/wallet-toolbox 0.0.8 → 0.0.9

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 (55) hide show
  1. package/dist/api/OneSatApi.d.ts +100 -0
  2. package/dist/api/OneSatApi.js +156 -0
  3. package/dist/api/balance/index.d.ts +38 -0
  4. package/dist/api/balance/index.js +82 -0
  5. package/dist/api/broadcast/index.d.ts +22 -0
  6. package/dist/api/broadcast/index.js +45 -0
  7. package/dist/api/constants.d.ts +21 -0
  8. package/dist/api/constants.js +29 -0
  9. package/dist/api/index.d.ts +36 -0
  10. package/dist/api/index.js +38 -0
  11. package/dist/api/inscriptions/index.d.ts +25 -0
  12. package/dist/api/inscriptions/index.js +50 -0
  13. package/dist/api/locks/index.d.ts +44 -0
  14. package/dist/api/locks/index.js +233 -0
  15. package/dist/api/ordinals/index.d.ts +87 -0
  16. package/dist/api/ordinals/index.js +446 -0
  17. package/dist/api/payments/index.d.ts +37 -0
  18. package/dist/api/payments/index.js +130 -0
  19. package/dist/api/signing/index.d.ts +32 -0
  20. package/dist/api/signing/index.js +41 -0
  21. package/dist/api/tokens/index.d.ts +88 -0
  22. package/dist/api/tokens/index.js +400 -0
  23. package/dist/cwi/chrome.d.ts +11 -0
  24. package/dist/cwi/chrome.js +39 -0
  25. package/dist/cwi/event.d.ts +11 -0
  26. package/dist/cwi/event.js +38 -0
  27. package/dist/cwi/factory.d.ts +14 -0
  28. package/dist/cwi/factory.js +44 -0
  29. package/dist/cwi/index.d.ts +11 -0
  30. package/dist/cwi/index.js +11 -0
  31. package/dist/cwi/types.d.ts +39 -0
  32. package/dist/cwi/types.js +39 -0
  33. package/dist/index.d.ts +2 -1
  34. package/dist/index.js +5 -1
  35. package/dist/indexers/CosignIndexer.js +1 -0
  36. package/dist/indexers/InscriptionIndexer.js +3 -4
  37. package/dist/indexers/LockIndexer.js +1 -0
  38. package/dist/indexers/OrdLockIndexer.js +1 -0
  39. package/dist/indexers/OriginIndexer.js +1 -1
  40. package/dist/indexers/index.d.ts +1 -1
  41. package/dist/indexers/types.d.ts +18 -0
  42. package/dist/services/OneSatServices.d.ts +19 -10
  43. package/dist/services/OneSatServices.js +201 -39
  44. package/dist/services/client/ChaintracksClient.d.ts +55 -13
  45. package/dist/services/client/ChaintracksClient.js +123 -28
  46. package/dist/services/client/OrdfsClient.d.ts +2 -2
  47. package/dist/services/client/OrdfsClient.js +4 -3
  48. package/dist/services/client/TxoClient.js +9 -0
  49. package/dist/sync/AddressManager.d.ts +85 -0
  50. package/dist/sync/AddressManager.js +107 -0
  51. package/dist/sync/SyncManager.d.ts +207 -0
  52. package/dist/sync/SyncManager.js +507 -0
  53. package/dist/sync/index.d.ts +4 -0
  54. package/dist/sync/index.js +2 -0
  55. package/package.json +5 -4
@@ -0,0 +1,207 @@
1
+ /**
2
+ * SyncManager - Syncs external transactions to the BRC-100 wallet.
3
+ *
4
+ * Split into two components for Chrome extension compatibility:
5
+ * - SyncFetcher: Calls SSE endpoint and enqueues txids (runs in UI context)
6
+ * - SyncProcessor: Processes queue and internalizes outputs (runs in service worker)
7
+ *
8
+ * This separation is necessary because EventSource (SSE) doesn't work reliably
9
+ * in Chrome extension service workers due to their ephemeral nature.
10
+ */
11
+ import type { WalletInterface } from "@bsv/sdk";
12
+ import type { OneSatServices } from "../services/OneSatServices";
13
+ import type { SyncQueueStorage } from "./types";
14
+ import { AddressManager } from "./AddressManager";
15
+ import { Indexer } from "../indexers/types";
16
+ export interface SyncFetcherOptions {
17
+ /** 1sat services for SSE stream */
18
+ services: OneSatServices;
19
+ /** Sync queue storage (IndexedDB) */
20
+ syncQueue: SyncQueueStorage;
21
+ /** Address manager for getting addresses to sync */
22
+ addressManager: AddressManager;
23
+ }
24
+ export interface SyncFetcherEvents {
25
+ "fetch:start": {
26
+ addresses: string[];
27
+ };
28
+ "fetch:queued": {
29
+ outpoint: string;
30
+ score: number;
31
+ };
32
+ "fetch:complete": {
33
+ queuedCount: number;
34
+ };
35
+ "fetch:error": {
36
+ message: string;
37
+ };
38
+ }
39
+ type SyncFetcherEventListener<K extends keyof SyncFetcherEvents> = (data: SyncFetcherEvents[K]) => void;
40
+ /**
41
+ * SyncFetcher - Fetches outputs via SSE and enqueues them.
42
+ *
43
+ * Run this from the UI context (popup) when the wallet opens.
44
+ * It will fetch all new outputs since the last sync and add them to the queue.
45
+ */
46
+ export declare class SyncFetcher {
47
+ private services;
48
+ private syncQueue;
49
+ private addressManager;
50
+ private unsubscribeStream;
51
+ private listeners;
52
+ constructor(options: SyncFetcherOptions);
53
+ on<K extends keyof SyncFetcherEvents>(event: K, listener: SyncFetcherEventListener<K>): void;
54
+ off<K extends keyof SyncFetcherEvents>(event: K, listener: SyncFetcherEventListener<K>): void;
55
+ private emit;
56
+ /**
57
+ * Fetch new outputs via SSE and enqueue them.
58
+ * Returns when the stream completes (all historical data fetched).
59
+ */
60
+ fetch(currentHeight: number): Promise<number>;
61
+ /**
62
+ * Stop the SSE stream if running.
63
+ */
64
+ stop(): void;
65
+ private handleSyncOutput;
66
+ }
67
+ export interface SyncProcessorOptions {
68
+ /** The BRC-100 wallet to internalize to */
69
+ wallet: WalletInterface;
70
+ /** 1sat services for transaction fetching */
71
+ services: OneSatServices;
72
+ /** Sync queue storage (IndexedDB) */
73
+ syncQueue: SyncQueueStorage;
74
+ /** Address manager for yours receive addresses */
75
+ addressManager: AddressManager;
76
+ /** Network: mainnet or testnet */
77
+ network: "mainnet" | "testnet";
78
+ /** Batch size for queue processing (default: 20) */
79
+ batchSize?: number;
80
+ /** Custom indexers (optional, uses defaults if not provided) */
81
+ indexers?: Indexer[];
82
+ }
83
+ export interface SyncProcessorEvents {
84
+ "process:start": {};
85
+ "process:progress": {
86
+ pending: number;
87
+ done: number;
88
+ failed: number;
89
+ };
90
+ "process:complete": {};
91
+ "process:error": {
92
+ message: string;
93
+ };
94
+ "process:parsed": {
95
+ internalizedCount: number;
96
+ };
97
+ }
98
+ type SyncProcessorEventListener<K extends keyof SyncProcessorEvents> = (data: SyncProcessorEvents[K]) => void;
99
+ /**
100
+ * SyncProcessor - Processes the sync queue and internalizes outputs.
101
+ *
102
+ * Run this from the service worker. It will process items from the queue
103
+ * until the queue is empty or stop() is called.
104
+ */
105
+ export declare class SyncProcessor {
106
+ private wallet;
107
+ private services;
108
+ private syncQueue;
109
+ private addressManager;
110
+ private network;
111
+ private batchSize;
112
+ private indexers;
113
+ private processorRunning;
114
+ private stopRequested;
115
+ private listeners;
116
+ constructor(options: SyncProcessorOptions);
117
+ on<K extends keyof SyncProcessorEvents>(event: K, listener: SyncProcessorEventListener<K>): void;
118
+ off<K extends keyof SyncProcessorEvents>(event: K, listener: SyncProcessorEventListener<K>): void;
119
+ private emit;
120
+ /**
121
+ * Start processing the queue.
122
+ * Processes until queue is empty or stop() is called.
123
+ */
124
+ start(): Promise<void>;
125
+ /**
126
+ * Stop processing the queue.
127
+ */
128
+ stop(): void;
129
+ /**
130
+ * Check if processor is currently running.
131
+ */
132
+ isRunning(): boolean;
133
+ private processQueueLoop;
134
+ private processTxid;
135
+ private parseTransaction;
136
+ private buildInternalizeOutput;
137
+ private collectTags;
138
+ }
139
+ export interface SyncManagerOptions {
140
+ /** The BRC-100 wallet to internalize to */
141
+ wallet: WalletInterface;
142
+ /** 1sat services for SSE stream and transaction fetching */
143
+ services: OneSatServices;
144
+ /** Sync queue storage (IndexedDB or SQLite) */
145
+ syncQueue: SyncQueueStorage;
146
+ /** Address manager for yours receive addresses */
147
+ addressManager: AddressManager;
148
+ /** Network: mainnet or testnet */
149
+ network: "mainnet" | "testnet";
150
+ /** Batch size for queue processing (default: 20) */
151
+ batchSize?: number;
152
+ /** Custom indexers (optional, uses defaults if not provided) */
153
+ indexers?: Indexer[];
154
+ }
155
+ export interface SyncEvents {
156
+ "sync:start": {
157
+ addresses: string[];
158
+ };
159
+ "sync:progress": {
160
+ pending: number;
161
+ done: number;
162
+ failed: number;
163
+ };
164
+ "sync:complete": {};
165
+ "sync:error": {
166
+ message: string;
167
+ };
168
+ "sync:parsed": {
169
+ internalizedCount: number;
170
+ };
171
+ }
172
+ type SyncEventListener<K extends keyof SyncEvents> = (data: SyncEvents[K]) => void;
173
+ /**
174
+ * SyncManager - Legacy class that combines SSE fetching and queue processing.
175
+ *
176
+ * @deprecated For Chrome extensions, use SyncFetcher (in UI) and SyncProcessor (in service worker)
177
+ * separately since EventSource doesn't work reliably in service workers.
178
+ *
179
+ * This class is kept for backwards compatibility and for environments where
180
+ * SSE works (e.g., Node.js, React Native).
181
+ */
182
+ export declare class SyncManager {
183
+ private fetcher;
184
+ private processor;
185
+ private wallet;
186
+ private addressManager;
187
+ private listeners;
188
+ private fetchPromise;
189
+ constructor(options: SyncManagerOptions);
190
+ private setupEventForwarding;
191
+ on<K extends keyof SyncEvents>(event: K, listener: SyncEventListener<K>): void;
192
+ off<K extends keyof SyncEvents>(event: K, listener: SyncEventListener<K>): void;
193
+ private emit;
194
+ /**
195
+ * Start syncing - opens SSE stream and starts queue processor.
196
+ */
197
+ sync(): Promise<void>;
198
+ /**
199
+ * Stop syncing - closes SSE stream and stops queue processor.
200
+ */
201
+ stop(): void;
202
+ /**
203
+ * Check if sync is currently running.
204
+ */
205
+ isSyncing(): boolean;
206
+ }
207
+ export {};