@bsv/wallet-toolbox 2.1.3 → 2.1.5

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 (42) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/docs/client.md +269 -43
  3. package/docs/monitor.md +92 -6
  4. package/docs/services.md +163 -21
  5. package/docs/wallet.md +269 -43
  6. package/out/src/index.all.d.ts +1 -0
  7. package/out/src/index.all.d.ts.map +1 -1
  8. package/out/src/index.all.js +1 -0
  9. package/out/src/index.all.js.map +1 -1
  10. package/out/src/index.mobile.d.ts +1 -0
  11. package/out/src/index.mobile.d.ts.map +1 -1
  12. package/out/src/index.mobile.js +1 -0
  13. package/out/src/index.mobile.js.map +1 -1
  14. package/out/src/monitor/Monitor.d.ts +24 -0
  15. package/out/src/monitor/Monitor.d.ts.map +1 -1
  16. package/out/src/monitor/Monitor.js +24 -1
  17. package/out/src/monitor/Monitor.js.map +1 -1
  18. package/out/src/monitor/tasks/TaskArcSSE.d.ts +27 -0
  19. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -0
  20. package/out/src/monitor/tasks/TaskArcSSE.js +260 -0
  21. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -0
  22. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts +2 -0
  23. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts.map +1 -0
  24. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js +257 -0
  25. package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js.map +1 -0
  26. package/out/src/services/Services.d.ts +1 -1
  27. package/out/src/services/Services.d.ts.map +1 -1
  28. package/out/src/services/Services.js +5 -3
  29. package/out/src/services/Services.js.map +1 -1
  30. package/out/src/services/index.d.ts +1 -0
  31. package/out/src/services/index.d.ts.map +1 -1
  32. package/out/src/services/index.js +1 -0
  33. package/out/src/services/index.js.map +1 -1
  34. package/out/src/services/providers/ArcSSEClient.d.ts +57 -0
  35. package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -0
  36. package/out/src/services/providers/ArcSSEClient.js +111 -0
  37. package/out/src/services/providers/ArcSSEClient.js.map +1 -0
  38. package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts +2 -0
  39. package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts.map +1 -0
  40. package/out/src/services/providers/__tests/ArcSSEClient.test.js +256 -0
  41. package/out/src/services/providers/__tests/ArcSSEClient.test.js.map +1 -0
  42. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -4,6 +4,15 @@ This document captures the history of significant changes to the wallet-toolbox
4
4
  The git commit history contains the details but is unable to draw
5
5
  attention to changes that materially alter behavior or extend functionality.
6
6
 
7
+ ## wallet-toolbox 2.1.5
8
+
9
+ - Update deps, docs, lint
10
+
11
+ ## wallet-toolbox 2.1.4
12
+
13
+ - Change `Monitor`: Add SSE event hooks.
14
+ - Add `ArcSSEClient` to drive SSE event hooks on mobile
15
+
7
16
  ## wallet-toolbox 2.1.3
8
17
 
9
18
  - Change `Monitor`: no retry for invalid beefs in TaskSendWaiting. Cleanup logging.
package/docs/client.md CHANGED
@@ -6,9 +6,11 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
6
6
 
7
7
  | | | |
8
8
  | --- | --- | --- |
9
- | [AdminStatsResult](#interface-adminstatsresult) | [GenerateChangeSdkOutput](#interface-generatechangesdkoutput) | [StatusForTxidResult](#interface-statusfortxidresult) |
10
- | [ArcConfig](#interface-arcconfig) | [GenerateChangeSdkParams](#interface-generatechangesdkparams) | [StorageAdminStats](#interface-storageadminstats) |
11
- | [ArcMinerGetTxData](#interface-arcminergettxdata) | [GenerateChangeSdkResult](#interface-generatechangesdkresult) | [StorageCreateActionResult](#interface-storagecreateactionresult) |
9
+ | [AdminStatsResult](#interface-adminstatsresult) | [GenerateChangeSdkChangeOutput](#interface-generatechangesdkchangeoutput) | [SignActionResultX](#interface-signactionresultx) |
10
+ | [ArcConfig](#interface-arcconfig) | [GenerateChangeSdkInput](#interface-generatechangesdkinput) | [StartAuthResponse](#interface-startauthresponse) |
11
+ | [ArcMinerGetTxData](#interface-arcminergettxdata) | [GenerateChangeSdkOutput](#interface-generatechangesdkoutput) | [StatusForTxidResult](#interface-statusfortxidresult) |
12
+ | [ArcSSEClientOptions](#interface-arcsseclientoptions) | [GenerateChangeSdkParams](#interface-generatechangesdkparams) | [StorageAdminStats](#interface-storageadminstats) |
13
+ | [ArcSSEEvent](#interface-arcsseevent) | [GenerateChangeSdkResult](#interface-generatechangesdkresult) | [StorageCreateActionResult](#interface-storagecreateactionresult) |
12
14
  | [AuthId](#interface-authid) | [GenerateChangeSdkStorageChange](#interface-generatechangesdkstoragechange) | [StorageCreateTransactionSdkInput](#interface-storagecreatetransactionsdkinput) |
13
15
  | [AuthPayload](#interface-authpayload) | [GetHeaderByteFileLinksResult](#interface-getheaderbytefilelinksresult) | [StorageCreateTransactionSdkOutput](#interface-storagecreatetransactionsdkoutput) |
14
16
  | [BaseBlockHeader](#interface-baseblockheader) | [GetMerklePathResult](#interface-getmerklepathresult) | [StorageFeeModel](#interface-storagefeemodel) |
@@ -80,8 +82,6 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
80
82
  | [FindTxLabelsArgs](#interface-findtxlabelsargs) | [SetupWalletClient](#interface-setupwalletclient) | [WocGetHeadersHeader](#interface-wocgetheadersheader) |
81
83
  | [FindUsersArgs](#interface-findusersargs) | [SetupWalletIdb](#interface-setupwalletidb) | [WocHeader](#interface-wocheader) |
82
84
  | [GenerateChangeSdkChangeInput](#interface-generatechangesdkchangeinput) | [SetupWalletIdbArgs](#interface-setupwalletidbargs) | [XValidCreateActionOutput](#interface-xvalidcreateactionoutput) |
83
- | [GenerateChangeSdkChangeOutput](#interface-generatechangesdkchangeoutput) | [SignActionResultX](#interface-signactionresultx) | |
84
- | [GenerateChangeSdkInput](#interface-generatechangesdkinput) | [StartAuthResponse](#interface-startauthresponse) | |
85
85
 
86
86
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
87
87
 
@@ -188,6 +188,104 @@ See also: [blockHash](./services.md#function-blockhash)
188
188
 
189
189
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
190
190
 
191
+ ---
192
+ ##### Interface: ArcSSEClientOptions
193
+
194
+ ```ts
195
+ export interface ArcSSEClientOptions {
196
+ baseUrl: string;
197
+ callbackToken: string;
198
+ arcApiKey?: string;
199
+ onEvent: (event: ArcSSEEvent) => void;
200
+ onError?: (error: Error) => void;
201
+ lastEventId?: string;
202
+ onLastEventIdChanged?: (lastEventId: string) => void;
203
+ EventSourceClass: any;
204
+ }
205
+ ```
206
+
207
+ See also: [ArcSSEEvent](./services.md#interface-arcsseevent)
208
+
209
+ ###### Property EventSourceClass
210
+
211
+ The react-native-sse EventSource class — passed in to avoid import from wallet-toolbox
212
+
213
+ ```ts
214
+ EventSourceClass: any
215
+ ```
216
+
217
+ ###### Property arcApiKey
218
+
219
+ Server-level API key for Authorization header (from ArcConfig.apiKey)
220
+
221
+ ```ts
222
+ arcApiKey?: string
223
+ ```
224
+
225
+ ###### Property baseUrl
226
+
227
+ Base URL of the Arcade instance (e.g. "https://arcade-us-1.bsvb.tech")
228
+
229
+ ```ts
230
+ baseUrl: string
231
+ ```
232
+
233
+ ###### Property callbackToken
234
+
235
+ Stable per-wallet token matching the X-CallbackToken sent on broadcast
236
+
237
+ ```ts
238
+ callbackToken: string
239
+ ```
240
+
241
+ ###### Property lastEventId
242
+
243
+ Initial lastEventId for catchup
244
+
245
+ ```ts
246
+ lastEventId?: string
247
+ ```
248
+
249
+ ###### Property onError
250
+
251
+ Called when a connection error occurs
252
+
253
+ ```ts
254
+ onError?: (error: Error) => void
255
+ ```
256
+
257
+ ###### Property onEvent
258
+
259
+ Called for each status event received
260
+
261
+ ```ts
262
+ onEvent: (event: ArcSSEEvent) => void
263
+ ```
264
+ See also: [ArcSSEEvent](./services.md#interface-arcsseevent)
265
+
266
+ ###### Property onLastEventIdChanged
267
+
268
+ Called whenever lastEventId changes, for persistence to storage
269
+
270
+ ```ts
271
+ onLastEventIdChanged?: (lastEventId: string) => void
272
+ ```
273
+
274
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
275
+
276
+ ---
277
+ ##### Interface: ArcSSEEvent
278
+
279
+ ```ts
280
+ export interface ArcSSEEvent {
281
+ txid: string;
282
+ txStatus: string;
283
+ timestamp: string;
284
+ }
285
+ ```
286
+
287
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
288
+
191
289
  ---
192
290
  ##### Interface: AuthId
193
291
 
@@ -3716,13 +3814,45 @@ export interface MonitorOptions {
3716
3814
  abandonedMsecs: number;
3717
3815
  unprovenAttemptsLimitTest: number;
3718
3816
  unprovenAttemptsLimitMain: number;
3817
+ callbackToken?: string;
3818
+ loadLastSSEEventId?: () => Promise<string | undefined>;
3819
+ saveLastSSEEventId?: (lastEventId: string) => Promise<void>;
3820
+ EventSourceClass?: any;
3719
3821
  onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void>;
3720
3822
  onTransactionProven?: (txStatus: ProvenTransactionStatus) => Promise<void>;
3823
+ onTransactionStatusChanged?: (txid: string, newStatus: string) => Promise<void>;
3721
3824
  }
3722
3825
  ```
3723
3826
 
3724
3827
  See also: [Chain](./client.md#type-chain), [Chaintracks](./services.md#class-chaintracks), [ChaintracksClientApi](./services.md#interface-chaintracksclientapi), [MonitorStorage](./monitor.md#type-monitorstorage), [ProvenTransactionStatus](./client.md#interface-proventransactionstatus), [ReviewActionResult](./client.md#interface-reviewactionresult), [Services](./services.md#class-services), [WalletServices](./client.md#interface-walletservices)
3725
3828
 
3829
+ ###### Property EventSourceClass
3830
+
3831
+ The react-native-sse EventSource class for SSE support in React Native
3832
+
3833
+ ```ts
3834
+ EventSourceClass?: any
3835
+ ```
3836
+
3837
+ ###### Property callbackToken
3838
+
3839
+ Stable callback token for ARC SSE event streaming.
3840
+ When set, TaskArcadeSSE will open an SSE connection to Arcade's
3841
+ /events endpoint and receive real-time transaction status updates.
3842
+ Must match the X-CallbackToken header sent during broadcast.
3843
+
3844
+ ```ts
3845
+ callbackToken?: string
3846
+ ```
3847
+
3848
+ ###### Property loadLastSSEEventId
3849
+
3850
+ Load persisted SSE lastEventId (e.g. from SQLite) for catchup on startup
3851
+
3852
+ ```ts
3853
+ loadLastSSEEventId?: () => Promise<string | undefined>
3854
+ ```
3855
+
3726
3856
  ###### Property msecsWaitPerMerkleProofServiceReq
3727
3857
 
3728
3858
  How many msecs to wait after each getMerkleProof service request.
@@ -3740,6 +3870,14 @@ onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void
3740
3870
  ```
3741
3871
  See also: [ReviewActionResult](./client.md#interface-reviewactionresult)
3742
3872
 
3873
+ ###### Property saveLastSSEEventId
3874
+
3875
+ Save SSE lastEventId to persistent storage
3876
+
3877
+ ```ts
3878
+ saveLastSSEEventId?: (lastEventId: string) => Promise<void>
3879
+ ```
3880
+
3743
3881
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
3744
3882
 
3745
3883
  ---
@@ -8275,43 +8413,43 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
8275
8413
 
8276
8414
  | | | |
8277
8415
  | --- | --- | --- |
8278
- | [ARC](#class-arc) | [EntitySyncState](#class-entitysyncstate) | [TaskNewHeader](#class-tasknewheader) |
8279
- | [AuthMethodInteractor](#class-authmethodinteractor) | [EntityTransaction](#class-entitytransaction) | [TaskPurge](#class-taskpurge) |
8280
- | [BHServiceClient](#class-bhserviceclient) | [EntityTxLabel](#class-entitytxlabel) | [TaskReorg](#class-taskreorg) |
8281
- | [Bitails](#class-bitails) | [EntityTxLabelMap](#class-entitytxlabelmap) | [TaskReviewStatus](#class-taskreviewstatus) |
8282
- | [BulkFileDataManager](#class-bulkfiledatamanager) | [EntityUser](#class-entityuser) | [TaskSendWaiting](#class-tasksendwaiting) |
8283
- | [BulkFileDataReader](#class-bulkfiledatareader) | [HeightRange](#class-heightrange) | [TaskSyncWhenIdle](#class-tasksyncwhenidle) |
8284
- | [BulkFilesReader](#class-bulkfilesreader) | [LiveIngestorBase](#class-liveingestorbase) | [TaskUnFail](#class-taskunfail) |
8285
- | [BulkFilesReaderFs](#class-bulkfilesreaderfs) | [LiveIngestorWhatsOnChainPoll](#class-liveingestorwhatsonchainpoll) | [TwilioPhoneInteractor](#class-twiliophoneinteractor) |
8286
- | [BulkFilesReaderStorage](#class-bulkfilesreaderstorage) | [MergeEntity](#class-mergeentity) | [WABClient](#class-wabclient) |
8287
- | [BulkHeaderFile](#class-bulkheaderfile) | [MockChainMigrations](#class-mockchainmigrations) | [WERR_BAD_REQUEST](#class-werr_bad_request) |
8288
- | [BulkHeaderFileFs](#class-bulkheaderfilefs) | [MockChainStorage](#class-mockchainstorage) | [WERR_BROADCAST_UNAVAILABLE](#class-werr_broadcast_unavailable) |
8289
- | [BulkHeaderFileStorage](#class-bulkheaderfilestorage) | [MockChainTracker](#class-mockchaintracker) | [WERR_INSUFFICIENT_FUNDS](#class-werr_insufficient_funds) |
8290
- | [BulkHeaderFiles](#class-bulkheaderfiles) | [MockMiner](#class-mockminer) | [WERR_INTERNAL](#class-werr_internal) |
8291
- | [BulkIngestorBase](#class-bulkingestorbase) | [MockServices](#class-mockservices) | [WERR_INVALID_MERKLE_ROOT](#class-werr_invalid_merkle_root) |
8292
- | [BulkIngestorCDN](#class-bulkingestorcdn) | [Monitor](#class-monitor) | [WERR_INVALID_OPERATION](#class-werr_invalid_operation) |
8293
- | [BulkIngestorCDNBabbage](#class-bulkingestorcdnbabbage) | [OverlayUMPTokenInteractor](#class-overlayumptokeninteractor) | [WERR_INVALID_PARAMETER](#class-werr_invalid_parameter) |
8294
- | [BulkIngestorWhatsOnChainCdn](#class-bulkingestorwhatsonchaincdn) | [PersonaIDInteractor](#class-personaidinteractor) | [WERR_INVALID_PUBLIC_KEY](#class-werr_invalid_public_key) |
8295
- | [BulkStorageBase](#class-bulkstoragebase) | [PrivilegedKeyManager](#class-privilegedkeymanager) | [WERR_MISSING_PARAMETER](#class-werr_missing_parameter) |
8296
- | [CWIStyleWalletManager](#class-cwistylewalletmanager) | [ScriptTemplateBRC29](#class-scripttemplatebrc29) | [WERR_NETWORK_CHAIN](#class-werr_network_chain) |
8297
- | [Chaintracks](#class-chaintracks) | [SdkWhatsOnChain](#class-sdkwhatsonchain) | [WERR_NOT_ACTIVE](#class-werr_not_active) |
8298
- | [ChaintracksChainTracker](#class-chaintrackschaintracker) | [ServiceCollection](#class-servicecollection) | [WERR_NOT_IMPLEMENTED](#class-werr_not_implemented) |
8299
- | [ChaintracksFetch](#class-chaintracksfetch) | [Services](#class-services) | [WERR_REVIEW_ACTIONS](#class-werr_review_actions) |
8300
- | [ChaintracksServiceClient](#class-chaintracksserviceclient) | [SetupClient](#class-setupclient) | [WERR_UNAUTHORIZED](#class-werr_unauthorized) |
8301
- | [ChaintracksStorageBase](#class-chaintracksstoragebase) | [SimpleWalletManager](#class-simplewalletmanager) | [Wallet](#class-wallet) |
8302
- | [ChaintracksStorageIdb](#class-chaintracksstorageidb) | [SingleWriterMultiReaderLock](#class-singlewritermultireaderlock) | [WalletAuthenticationManager](#class-walletauthenticationmanager) |
8303
- | [ChaintracksStorageNoDb](#class-chaintracksstoragenodb) | [StorageClient](#class-storageclient) | [WalletError](#class-walleterror) |
8304
- | [DevConsoleInteractor](#class-devconsoleinteractor) | [StorageIdb](#class-storageidb) | [WalletLogger](#class-walletlogger) |
8305
- | [EntityBase](#class-entitybase) | [StorageProvider](#class-storageprovider) | [WalletMonitorTask](#class-walletmonitortask) |
8306
- | [EntityCertificate](#class-entitycertificate) | [StorageReader](#class-storagereader) | [WalletPermissionsManager](#class-walletpermissionsmanager) |
8307
- | [EntityCertificateField](#class-entitycertificatefield) | [StorageReaderWriter](#class-storagereaderwriter) | [WalletSettingsManager](#class-walletsettingsmanager) |
8308
- | [EntityCommission](#class-entitycommission) | [StorageSyncReader](#class-storagesyncreader) | [WalletSigner](#class-walletsigner) |
8309
- | [EntityOutput](#class-entityoutput) | [TaskCheckForProofs](#class-taskcheckforproofs) | [WalletStorageManager](#class-walletstoragemanager) |
8310
- | [EntityOutputBasket](#class-entityoutputbasket) | [TaskCheckNoSends](#class-taskchecknosends) | [WhatsOnChain](#class-whatsonchain) |
8311
- | [EntityOutputTag](#class-entityoutputtag) | [TaskClock](#class-taskclock) | [WhatsOnChainNoServices](#class-whatsonchainnoservices) |
8312
- | [EntityOutputTagMap](#class-entityoutputtagmap) | [TaskFailAbandoned](#class-taskfailabandoned) | [WhatsOnChainServices](#class-whatsonchainservices) |
8313
- | [EntityProvenTx](#class-entityproventx) | [TaskMineBlock](#class-taskmineblock) | |
8314
- | [EntityProvenTxReq](#class-entityproventxreq) | [TaskMonitorCallHistory](#class-taskmonitorcallhistory) | |
8416
+ | [ARC](#class-arc) | [EntityProvenTxReq](#class-entityproventxreq) | [TaskMineBlock](#class-taskmineblock) |
8417
+ | [ArcSSEClient](#class-arcsseclient) | [EntitySyncState](#class-entitysyncstate) | [TaskMonitorCallHistory](#class-taskmonitorcallhistory) |
8418
+ | [AuthMethodInteractor](#class-authmethodinteractor) | [EntityTransaction](#class-entitytransaction) | [TaskNewHeader](#class-tasknewheader) |
8419
+ | [BHServiceClient](#class-bhserviceclient) | [EntityTxLabel](#class-entitytxlabel) | [TaskPurge](#class-taskpurge) |
8420
+ | [Bitails](#class-bitails) | [EntityTxLabelMap](#class-entitytxlabelmap) | [TaskReorg](#class-taskreorg) |
8421
+ | [BulkFileDataManager](#class-bulkfiledatamanager) | [EntityUser](#class-entityuser) | [TaskReviewStatus](#class-taskreviewstatus) |
8422
+ | [BulkFileDataReader](#class-bulkfiledatareader) | [HeightRange](#class-heightrange) | [TaskSendWaiting](#class-tasksendwaiting) |
8423
+ | [BulkFilesReader](#class-bulkfilesreader) | [LiveIngestorBase](#class-liveingestorbase) | [TaskSyncWhenIdle](#class-tasksyncwhenidle) |
8424
+ | [BulkFilesReaderFs](#class-bulkfilesreaderfs) | [LiveIngestorWhatsOnChainPoll](#class-liveingestorwhatsonchainpoll) | [TaskUnFail](#class-taskunfail) |
8425
+ | [BulkFilesReaderStorage](#class-bulkfilesreaderstorage) | [MergeEntity](#class-mergeentity) | [TwilioPhoneInteractor](#class-twiliophoneinteractor) |
8426
+ | [BulkHeaderFile](#class-bulkheaderfile) | [MockChainMigrations](#class-mockchainmigrations) | [WABClient](#class-wabclient) |
8427
+ | [BulkHeaderFileFs](#class-bulkheaderfilefs) | [MockChainStorage](#class-mockchainstorage) | [WERR_BAD_REQUEST](#class-werr_bad_request) |
8428
+ | [BulkHeaderFileStorage](#class-bulkheaderfilestorage) | [MockChainTracker](#class-mockchaintracker) | [WERR_BROADCAST_UNAVAILABLE](#class-werr_broadcast_unavailable) |
8429
+ | [BulkHeaderFiles](#class-bulkheaderfiles) | [MockMiner](#class-mockminer) | [WERR_INSUFFICIENT_FUNDS](#class-werr_insufficient_funds) |
8430
+ | [BulkIngestorBase](#class-bulkingestorbase) | [MockServices](#class-mockservices) | [WERR_INTERNAL](#class-werr_internal) |
8431
+ | [BulkIngestorCDN](#class-bulkingestorcdn) | [Monitor](#class-monitor) | [WERR_INVALID_MERKLE_ROOT](#class-werr_invalid_merkle_root) |
8432
+ | [BulkIngestorCDNBabbage](#class-bulkingestorcdnbabbage) | [OverlayUMPTokenInteractor](#class-overlayumptokeninteractor) | [WERR_INVALID_OPERATION](#class-werr_invalid_operation) |
8433
+ | [BulkIngestorWhatsOnChainCdn](#class-bulkingestorwhatsonchaincdn) | [PersonaIDInteractor](#class-personaidinteractor) | [WERR_INVALID_PARAMETER](#class-werr_invalid_parameter) |
8434
+ | [BulkStorageBase](#class-bulkstoragebase) | [PrivilegedKeyManager](#class-privilegedkeymanager) | [WERR_INVALID_PUBLIC_KEY](#class-werr_invalid_public_key) |
8435
+ | [CWIStyleWalletManager](#class-cwistylewalletmanager) | [ScriptTemplateBRC29](#class-scripttemplatebrc29) | [WERR_MISSING_PARAMETER](#class-werr_missing_parameter) |
8436
+ | [Chaintracks](#class-chaintracks) | [SdkWhatsOnChain](#class-sdkwhatsonchain) | [WERR_NETWORK_CHAIN](#class-werr_network_chain) |
8437
+ | [ChaintracksChainTracker](#class-chaintrackschaintracker) | [ServiceCollection](#class-servicecollection) | [WERR_NOT_ACTIVE](#class-werr_not_active) |
8438
+ | [ChaintracksFetch](#class-chaintracksfetch) | [Services](#class-services) | [WERR_NOT_IMPLEMENTED](#class-werr_not_implemented) |
8439
+ | [ChaintracksServiceClient](#class-chaintracksserviceclient) | [SetupClient](#class-setupclient) | [WERR_REVIEW_ACTIONS](#class-werr_review_actions) |
8440
+ | [ChaintracksStorageBase](#class-chaintracksstoragebase) | [SimpleWalletManager](#class-simplewalletmanager) | [WERR_UNAUTHORIZED](#class-werr_unauthorized) |
8441
+ | [ChaintracksStorageIdb](#class-chaintracksstorageidb) | [SingleWriterMultiReaderLock](#class-singlewritermultireaderlock) | [Wallet](#class-wallet) |
8442
+ | [ChaintracksStorageNoDb](#class-chaintracksstoragenodb) | [StorageClient](#class-storageclient) | [WalletAuthenticationManager](#class-walletauthenticationmanager) |
8443
+ | [DevConsoleInteractor](#class-devconsoleinteractor) | [StorageIdb](#class-storageidb) | [WalletError](#class-walleterror) |
8444
+ | [EntityBase](#class-entitybase) | [StorageProvider](#class-storageprovider) | [WalletLogger](#class-walletlogger) |
8445
+ | [EntityCertificate](#class-entitycertificate) | [StorageReader](#class-storagereader) | [WalletMonitorTask](#class-walletmonitortask) |
8446
+ | [EntityCertificateField](#class-entitycertificatefield) | [StorageReaderWriter](#class-storagereaderwriter) | [WalletPermissionsManager](#class-walletpermissionsmanager) |
8447
+ | [EntityCommission](#class-entitycommission) | [StorageSyncReader](#class-storagesyncreader) | [WalletSettingsManager](#class-walletsettingsmanager) |
8448
+ | [EntityOutput](#class-entityoutput) | [TaskArcadeSSE](#class-taskarcadesse) | [WalletSigner](#class-walletsigner) |
8449
+ | [EntityOutputBasket](#class-entityoutputbasket) | [TaskCheckForProofs](#class-taskcheckforproofs) | [WalletStorageManager](#class-walletstoragemanager) |
8450
+ | [EntityOutputTag](#class-entityoutputtag) | [TaskCheckNoSends](#class-taskchecknosends) | [WhatsOnChain](#class-whatsonchain) |
8451
+ | [EntityOutputTagMap](#class-entityoutputtagmap) | [TaskClock](#class-taskclock) | [WhatsOnChainNoServices](#class-whatsonchainnoservices) |
8452
+ | [EntityProvenTx](#class-entityproventx) | [TaskFailAbandoned](#class-taskfailabandoned) | [WhatsOnChainServices](#class-whatsonchainservices) |
8315
8453
 
8316
8454
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8317
8455
 
@@ -8410,6 +8548,49 @@ See also: [PostTxResultForTxid](./client.md#interface-posttxresultfortxid)
8410
8548
 
8411
8549
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8412
8550
 
8551
+ ---
8552
+ ##### Class: ArcSSEClient
8553
+
8554
+ ```ts
8555
+ export class ArcSSEClient {
8556
+ constructor(private readonly options: ArcSSEClientOptions)
8557
+ get lastEventId(): string | undefined
8558
+ connect(): void
8559
+ close(): void
8560
+ async fetchEvents(): Promise<number>
8561
+ }
8562
+ ```
8563
+
8564
+ See also: [ArcSSEClientOptions](./services.md#interface-arcsseclientoptions)
8565
+
8566
+ ###### Method close
8567
+
8568
+ Close the connection and clean up
8569
+
8570
+ ```ts
8571
+ close(): void
8572
+ ```
8573
+
8574
+ ###### Method connect
8575
+
8576
+ Open the SSE connection. Events will be dispatched via onEvent as they arrive.
8577
+
8578
+ ```ts
8579
+ connect(): void
8580
+ ```
8581
+
8582
+ ###### Method fetchEvents
8583
+
8584
+ Ensure connection is open. If already connected, this is a no-op.
8585
+ If not connected, opens a new connection with catchup from lastEventId.
8586
+ Returns immediately — events arrive asynchronously via onEvent callback.
8587
+
8588
+ ```ts
8589
+ async fetchEvents(): Promise<number>
8590
+ ```
8591
+
8592
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8593
+
8413
8594
  ---
8414
8595
  ##### Class: AuthMethodInteractor
8415
8596
 
@@ -11478,6 +11659,7 @@ export class Monitor {
11478
11659
  headersSubscriptionPromise?: Promise<string>;
11479
11660
  onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void>;
11480
11661
  onTransactionProven?: (txStatus: ProvenTransactionStatus) => Promise<void>;
11662
+ onTransactionStatusChanged?: (txid: string, newStatus: string) => Promise<void>;
11481
11663
  constructor(options: MonitorOptions)
11482
11664
  async destroy(): Promise<void>
11483
11665
  static readonly oneSecond = 1000;
@@ -11514,6 +11696,8 @@ export class Monitor {
11514
11696
  processNewBlockHeader(header: BlockHeader): void
11515
11697
  callOnBroadcastedTransaction(broadcastResult: ReviewActionResult): void
11516
11698
  callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
11699
+ callOnTransactionStatusChanged(txid: string, newStatus: string): void
11700
+ async fetchSSEEvents(): Promise<number>
11517
11701
  deactivatedHeaders: DeactivedHeader[] = [];
11518
11702
  processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader, deactivatedHeaders?: BlockHeader[]): void
11519
11703
  processHeader(header: BlockHeader): void
@@ -11580,6 +11764,23 @@ callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
11580
11764
  ```
11581
11765
  See also: [ProvenTransactionStatus](./client.md#interface-proventransactionstatus)
11582
11766
 
11767
+ ###### Method callOnTransactionStatusChanged
11768
+
11769
+ Called by TaskArcadeSSE when an SSE status event is received from Arcade.
11770
+
11771
+ ```ts
11772
+ callOnTransactionStatusChanged(txid: string, newStatus: string): void
11773
+ ```
11774
+
11775
+ ###### Method fetchSSEEvents
11776
+
11777
+ Fetch pending transaction status events from Arcade on demand.
11778
+ Call this on app open, balance refresh, transaction list view, etc.
11779
+
11780
+ ```ts
11781
+ async fetchSSEEvents(): Promise<number>
11782
+ ```
11783
+
11583
11784
  ###### Method processHeader
11584
11785
 
11585
11786
  Handler for new header events from Chaintracks.
@@ -11938,7 +12139,7 @@ export class Services implements WalletServices {
11938
12139
  whatsonchain: WhatsOnChain;
11939
12140
  arcTaal: ARC;
11940
12141
  arcGorillaPool?: ARC;
11941
- bitails: Bitails;
12142
+ bitails?: Bitails;
11942
12143
  getMerklePathServices: ServiceCollection<GetMerklePathService>;
11943
12144
  getRawTxServices: ServiceCollection<GetRawTxService>;
11944
12145
  postBeefServices: ServiceCollection<PostBeefService>;
@@ -13779,6 +13980,31 @@ See also: [AuthId](./client.md#interface-authid), [RequestSyncChunkArgs](./clien
13779
13980
 
13780
13981
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
13781
13982
 
13983
+ ---
13984
+ ##### Class: TaskArcadeSSE
13985
+
13986
+ Monitor task that receives transaction status updates from Arcade via SSE
13987
+ and processes them — including fetching merkle proofs directly from Arcade
13988
+ when transactions are MINED.
13989
+
13990
+ ```ts
13991
+ export class TaskArcadeSSE extends WalletMonitorTask {
13992
+ static taskName = "ArcadeSSE";
13993
+ sseClient: ArcSSEClient | null = null;
13994
+ constructor(monitor: Monitor)
13995
+ override async asyncSetup(): Promise<void>
13996
+ trigger(_nowMsecsSinceEpoch: number): {
13997
+ run: boolean;
13998
+ }
13999
+ async runTask(): Promise<string>
14000
+ async fetchNow(): Promise<number>
14001
+ }
14002
+ ```
14003
+
14004
+ See also: [ArcSSEClient](./services.md#class-arcsseclient), [Monitor](./monitor.md#class-monitor), [WalletMonitorTask](./monitor.md#class-walletmonitortask)
14005
+
14006
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
14007
+
13782
14008
  ---
13783
14009
  ##### Class: TaskCheckForProofs
13784
14010
 
package/docs/monitor.md CHANGED
@@ -109,13 +109,45 @@ export interface MonitorOptions {
109
109
  abandonedMsecs: number;
110
110
  unprovenAttemptsLimitTest: number;
111
111
  unprovenAttemptsLimitMain: number;
112
+ callbackToken?: string;
113
+ loadLastSSEEventId?: () => Promise<string | undefined>;
114
+ saveLastSSEEventId?: (lastEventId: string) => Promise<void>;
115
+ EventSourceClass?: any;
112
116
  onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void>;
113
117
  onTransactionProven?: (txStatus: ProvenTransactionStatus) => Promise<void>;
118
+ onTransactionStatusChanged?: (txid: string, newStatus: string) => Promise<void>;
114
119
  }
115
120
  ```
116
121
 
117
122
  See also: [Chain](./client.md#type-chain), [Chaintracks](./services.md#class-chaintracks), [ChaintracksClientApi](./services.md#interface-chaintracksclientapi), [MonitorStorage](./monitor.md#type-monitorstorage), [ProvenTransactionStatus](./client.md#interface-proventransactionstatus), [ReviewActionResult](./client.md#interface-reviewactionresult), [Services](./services.md#class-services), [WalletServices](./client.md#interface-walletservices)
118
123
 
124
+ ###### Property EventSourceClass
125
+
126
+ The react-native-sse EventSource class for SSE support in React Native
127
+
128
+ ```ts
129
+ EventSourceClass?: any
130
+ ```
131
+
132
+ ###### Property callbackToken
133
+
134
+ Stable callback token for ARC SSE event streaming.
135
+ When set, TaskArcadeSSE will open an SSE connection to Arcade's
136
+ /events endpoint and receive real-time transaction status updates.
137
+ Must match the X-CallbackToken header sent during broadcast.
138
+
139
+ ```ts
140
+ callbackToken?: string
141
+ ```
142
+
143
+ ###### Property loadLastSSEEventId
144
+
145
+ Load persisted SSE lastEventId (e.g. from SQLite) for catchup on startup
146
+
147
+ ```ts
148
+ loadLastSSEEventId?: () => Promise<string | undefined>
149
+ ```
150
+
119
151
  ###### Property msecsWaitPerMerkleProofServiceReq
120
152
 
121
153
  How many msecs to wait after each getMerkleProof service request.
@@ -133,6 +165,14 @@ onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void
133
165
  ```
134
166
  See also: [ReviewActionResult](./client.md#interface-reviewactionresult)
135
167
 
168
+ ###### Property saveLastSSEEventId
169
+
170
+ Save SSE lastEventId to persistent storage
171
+
172
+ ```ts
173
+ saveLastSSEEventId?: (lastEventId: string) => Promise<void>
174
+ ```
175
+
136
176
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
137
177
 
138
178
  ---
@@ -178,12 +218,13 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
178
218
  | --- | --- |
179
219
  | [Monitor](#class-monitor) | [TaskNewHeader](#class-tasknewheader) |
180
220
  | [MonitorDaemon](#class-monitordaemon) | [TaskPurge](#class-taskpurge) |
181
- | [TaskCheckForProofs](#class-taskcheckforproofs) | [TaskReorg](#class-taskreorg) |
182
- | [TaskCheckNoSends](#class-taskchecknosends) | [TaskReviewStatus](#class-taskreviewstatus) |
183
- | [TaskClock](#class-taskclock) | [TaskSendWaiting](#class-tasksendwaiting) |
184
- | [TaskFailAbandoned](#class-taskfailabandoned) | [TaskSyncWhenIdle](#class-tasksyncwhenidle) |
185
- | [TaskMineBlock](#class-taskmineblock) | [TaskUnFail](#class-taskunfail) |
186
- | [TaskMonitorCallHistory](#class-taskmonitorcallhistory) | [WalletMonitorTask](#class-walletmonitortask) |
221
+ | [TaskArcadeSSE](#class-taskarcadesse) | [TaskReorg](#class-taskreorg) |
222
+ | [TaskCheckForProofs](#class-taskcheckforproofs) | [TaskReviewStatus](#class-taskreviewstatus) |
223
+ | [TaskCheckNoSends](#class-taskchecknosends) | [TaskSendWaiting](#class-tasksendwaiting) |
224
+ | [TaskClock](#class-taskclock) | [TaskSyncWhenIdle](#class-tasksyncwhenidle) |
225
+ | [TaskFailAbandoned](#class-taskfailabandoned) | [TaskUnFail](#class-taskunfail) |
226
+ | [TaskMineBlock](#class-taskmineblock) | [WalletMonitorTask](#class-walletmonitortask) |
227
+ | [TaskMonitorCallHistory](#class-taskmonitorcallhistory) | |
187
228
 
188
229
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
189
230
 
@@ -207,6 +248,7 @@ export class Monitor {
207
248
  headersSubscriptionPromise?: Promise<string>;
208
249
  onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void>;
209
250
  onTransactionProven?: (txStatus: ProvenTransactionStatus) => Promise<void>;
251
+ onTransactionStatusChanged?: (txid: string, newStatus: string) => Promise<void>;
210
252
  constructor(options: MonitorOptions)
211
253
  async destroy(): Promise<void>
212
254
  static readonly oneSecond = 1000;
@@ -243,6 +285,8 @@ export class Monitor {
243
285
  processNewBlockHeader(header: BlockHeader): void
244
286
  callOnBroadcastedTransaction(broadcastResult: ReviewActionResult): void
245
287
  callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
288
+ callOnTransactionStatusChanged(txid: string, newStatus: string): void
289
+ async fetchSSEEvents(): Promise<number>
246
290
  deactivatedHeaders: DeactivedHeader[] = [];
247
291
  processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader, deactivatedHeaders?: BlockHeader[]): void
248
292
  processHeader(header: BlockHeader): void
@@ -309,6 +353,23 @@ callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
309
353
  ```
310
354
  See also: [ProvenTransactionStatus](./client.md#interface-proventransactionstatus)
311
355
 
356
+ ###### Method callOnTransactionStatusChanged
357
+
358
+ Called by TaskArcadeSSE when an SSE status event is received from Arcade.
359
+
360
+ ```ts
361
+ callOnTransactionStatusChanged(txid: string, newStatus: string): void
362
+ ```
363
+
364
+ ###### Method fetchSSEEvents
365
+
366
+ Fetch pending transaction status events from Arcade on demand.
367
+ Call this on app open, balance refresh, transaction list view, etc.
368
+
369
+ ```ts
370
+ async fetchSSEEvents(): Promise<number>
371
+ ```
372
+
312
373
  ###### Method processHeader
313
374
 
314
375
  Handler for new header events from Chaintracks.
@@ -372,6 +433,31 @@ See also: [MonitorDaemonSetup](./monitor.md#interface-monitordaemonsetup)
372
433
 
373
434
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
374
435
 
436
+ ---
437
+ ##### Class: TaskArcadeSSE
438
+
439
+ Monitor task that receives transaction status updates from Arcade via SSE
440
+ and processes them — including fetching merkle proofs directly from Arcade
441
+ when transactions are MINED.
442
+
443
+ ```ts
444
+ export class TaskArcadeSSE extends WalletMonitorTask {
445
+ static taskName = "ArcadeSSE";
446
+ sseClient: ArcSSEClient | null = null;
447
+ constructor(monitor: Monitor)
448
+ override async asyncSetup(): Promise<void>
449
+ trigger(_nowMsecsSinceEpoch: number): {
450
+ run: boolean;
451
+ }
452
+ async runTask(): Promise<string>
453
+ async fetchNow(): Promise<number>
454
+ }
455
+ ```
456
+
457
+ See also: [ArcSSEClient](./services.md#class-arcsseclient), [Monitor](./monitor.md#class-monitor), [WalletMonitorTask](./monitor.md#class-walletmonitortask)
458
+
459
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
460
+
375
461
  ---
376
462
  ##### Class: TaskCheckForProofs
377
463