@bopen-io/wallet-toolbox 2.14.5 → 2.15.0-bopen.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 (62) hide show
  1. package/CHANGELOG.md +47 -2
  2. package/README.md +73 -7
  3. package/docs/client.md +3020 -2729
  4. package/docs/monitor.md +164 -153
  5. package/docs/services.md +856 -710
  6. package/docs/setup.md +46 -1
  7. package/docs/storage.md +1654 -1636
  8. package/docs/wallet.md +2090 -1842
  9. package/out/src/Setup.d.ts +10 -0
  10. package/out/src/Setup.d.ts.map +1 -1
  11. package/out/src/Setup.js +24 -0
  12. package/out/src/Setup.js.map +1 -1
  13. package/out/src/monitor/MonitorDaemon.d.ts +2 -0
  14. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  15. package/out/src/monitor/MonitorDaemon.js +9 -1
  16. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  17. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +5 -0
  18. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  19. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +11 -3
  20. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  21. package/out/src/storage/StorageKnex.d.ts +3 -0
  22. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  23. package/out/src/storage/StorageKnex.js +115 -207
  24. package/out/src/storage/StorageKnex.js.map +1 -1
  25. package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
  26. package/out/src/storage/adminServer/adminServer.js +3 -41
  27. package/out/src/storage/adminServer/adminServer.js.map +1 -1
  28. package/out/src/storage/adminServer/reqReviewQuery.d.ts +41 -0
  29. package/out/src/storage/adminServer/reqReviewQuery.d.ts.map +1 -0
  30. package/out/src/storage/adminServer/reqReviewQuery.js +67 -0
  31. package/out/src/storage/adminServer/reqReviewQuery.js.map +1 -0
  32. package/out/src/storage/index.all.d.ts +1 -0
  33. package/out/src/storage/index.all.d.ts.map +1 -1
  34. package/out/src/storage/index.all.js +1 -0
  35. package/out/src/storage/index.all.js.map +1 -1
  36. package/out/src/storage/knexPostgres.d.ts +16 -0
  37. package/out/src/storage/knexPostgres.d.ts.map +1 -0
  38. package/out/src/storage/knexPostgres.js +34 -0
  39. package/out/src/storage/knexPostgres.js.map +1 -0
  40. package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
  41. package/out/src/storage/methods/listActionsKnex.js +0 -1
  42. package/out/src/storage/methods/listActionsKnex.js.map +1 -1
  43. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  44. package/out/src/storage/methods/listOutputsKnex.js +0 -1
  45. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  46. package/out/src/storage/methods/purgeData.d.ts.map +1 -1
  47. package/out/src/storage/methods/purgeData.js +0 -3
  48. package/out/src/storage/methods/purgeData.js.map +1 -1
  49. package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
  50. package/out/src/storage/methods/reviewStatus.js +0 -3
  51. package/out/src/storage/methods/reviewStatus.js.map +1 -1
  52. package/out/src/storage/portable/index.js +38 -12
  53. package/out/src/storage/portable/index.js.map +1 -1
  54. package/out/src/storage/remoting/StorageServer.d.ts +17 -4
  55. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  56. package/out/src/storage/remoting/StorageServer.js +22 -13
  57. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  58. package/out/src/storage/schema/KnexMigrations.d.ts +7 -2
  59. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  60. package/out/src/storage/schema/KnexMigrations.js +162 -60
  61. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  62. package/package.json +5 -4
package/docs/monitor.md CHANGED
@@ -80,6 +80,7 @@ export interface MonitorDaemonSetup {
80
80
  chain?: Chain;
81
81
  sqliteFilename?: string;
82
82
  mySQLConnection?: string;
83
+ postgresConnection?: string;
83
84
  knexConfig?: Knex.Config;
84
85
  knex?: Knex<any, any[]>;
85
86
  storageKnexOptions?: StorageKnexOptions;
@@ -95,6 +96,14 @@ export interface MonitorDaemonSetup {
95
96
 
96
97
  See also: [Chain](./client.md#type-chain), [ChaintracksClientApi](./services.md#interface-chaintracksclientapi), [Monitor](./monitor.md#class-monitor), [MonitorStartupTaskMode](./monitor.md#type-monitorstartuptaskmode), [Services](./services.md#class-services), [StorageKnexOptions](./storage.md#interface-storageknexoptions), [StorageProvider](./storage.md#class-storageprovider), [WalletServicesOptions](./client.md#interface-walletservicesoptions), [WalletStorageManager](./storage.md#class-walletstoragemanager)
97
98
 
99
+ ###### Property postgresConnection
100
+
101
+ JSON node-postgres connection config.
102
+
103
+ ```ts
104
+ postgresConnection?: string
105
+ ```
106
+
98
107
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
99
108
 
100
109
  ---
@@ -221,6 +230,7 @@ export interface ReviewHeightRangeResult {
221
230
  mismatchedHeights: number;
222
231
  affectedTransactions: number;
223
232
  updatedTransactions: number;
233
+ unresolvedHeights: number[];
224
234
  }
225
235
  ```
226
236
 
@@ -314,7 +324,7 @@ and potentially that reorgs update proofs that were already received.
314
324
 
315
325
  ```ts
316
326
  export class Monitor {
317
- static createDefaultWalletMonitorOptions(chain: Chain, storage: MonitorStorage, services?: Services, chaintracks?: ChaintracksClientApi, startupTaskMode: MonitorStartupTaskMode = "none"): MonitorOptions
327
+ static createDefaultWalletMonitorOptions(chain: Chain, storage: MonitorStorage, services?: Services, chaintracks?: ChaintracksClientApi, startupTaskMode: MonitorStartupTaskMode = "none"): MonitorOptions
318
328
  options: MonitorOptions;
319
329
  services: Services | WalletServices;
320
330
  chain: Chain;
@@ -327,9 +337,9 @@ export class Monitor {
327
337
  onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void>;
328
338
  onTransactionProven?: (txStatus: ProvenTransactionStatus) => Promise<void>;
329
339
  onTransactionStatusChanged?: (txid: string, newStatus: string) => Promise<void>;
330
- get ready(): Promise<void>
331
- constructor(options: MonitorOptions)
332
- async destroy(): Promise<void>
340
+ get ready(): Promise<void>
341
+ constructor(options: MonitorOptions)
342
+ async destroy(): Promise<void>
333
343
  static readonly oneSecond = 1000;
334
344
  static readonly oneMinute = 60 * Monitor.oneSecond;
335
345
  static readonly oneHour = 60 * Monitor.oneMinute;
@@ -346,31 +356,31 @@ export class Monitor {
346
356
  purgeCompletedAge: 2 * Monitor.oneWeek,
347
357
  purgeFailedAge: 5 * Monitor.oneDay
348
358
  };
349
- addAllTasksToOther(): void
350
- addDefaultTasks(): void
351
- addMultiUserTasks(): void
352
- addTask(task: WalletMonitorTask): void
353
- removeTask(name: string): void
354
- async runTask(name: string): Promise<string>
355
- async runOnce(): Promise<void>
359
+ addAllTasksToOther(): void
360
+ addDefaultTasks(): void
361
+ addMultiUserTasks(): void
362
+ addTask(task: WalletMonitorTask): void
363
+ removeTask(name: string): void
364
+ async runTask(name: string): Promise<string>
365
+ async runOnce(): Promise<void>
356
366
  _runAsyncSetup: boolean = true;
357
367
  _tasksRunningPromise?: PromiseLike<void>;
358
368
  resolveCompletion: ((value: void | PromiseLike<void>) => void) | undefined = undefined;
359
- async startTasks(): Promise<void>
360
- async logEvent(event: string, details?: string): Promise<void>
361
- stopTasks(): void
369
+ async startTasks(): Promise<void>
370
+ async logEvent(event: string, details?: string): Promise<void>
371
+ stopTasks(): void
362
372
  lastNewHeader: BlockHeader | undefined;
363
373
  lastNewHeaderWhen: Date | undefined;
364
- processNewBlockHeader(header: BlockHeader): void
365
- callOnBroadcastedTransaction(broadcastResult: ReviewActionResult): void
366
- callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
367
- callOnTransactionStatusChanged(txid: string, newStatus: string): void
368
- async fetchSSEEvents(): Promise<number>
374
+ processNewBlockHeader(header: BlockHeader): void
375
+ callOnBroadcastedTransaction(broadcastResult: ReviewActionResult): void
376
+ callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
377
+ callOnTransactionStatusChanged(txid: string, newStatus: string): void
378
+ async fetchSSEEvents(): Promise<number>
369
379
  deactivatedHeaders: DeactivedHeader[] = [];
370
- processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader, deactivatedHeaders?: BlockHeader[]): void
371
- enqueueDeactivatedHeader(item: DeactivedHeader): void
372
- shiftDeactivatedHeader(): DeactivedHeader | undefined
373
- processHeader(header: BlockHeader): void
380
+ processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader, deactivatedHeaders?: BlockHeader[]): void
381
+ enqueueDeactivatedHeader(item: DeactivedHeader): void
382
+ shiftDeactivatedHeader(): DeactivedHeader | undefined
383
+ processHeader(header: BlockHeader): void
374
384
  }
375
385
  ```
376
386
 
@@ -399,7 +409,7 @@ See also: [WalletMonitorTask](./monitor.md#class-walletmonitortask)
399
409
  Default tasks with settings appropriate for a single user storage
400
410
 
401
411
  ```ts
402
- addDefaultTasks(): void
412
+ addDefaultTasks(): void
403
413
  ```
404
414
 
405
415
  ###### Method addMultiUserTasks
@@ -407,7 +417,7 @@ addDefaultTasks(): void
407
417
  Tasks appropriate for multi-user storage
408
418
 
409
419
  ```ts
410
- addMultiUserTasks(): void
420
+ addMultiUserTasks(): void
411
421
  ```
412
422
 
413
423
  ###### Method callOnBroadcastedTransaction
@@ -417,7 +427,7 @@ This is a function run from a TaskSendWaiting Monitor task.
417
427
  This allows the user of wallet-toolbox to 'subscribe' for transaction broadcast updates.
418
428
 
419
429
  ```ts
420
- callOnBroadcastedTransaction(broadcastResult: ReviewActionResult): void
430
+ callOnBroadcastedTransaction(broadcastResult: ReviewActionResult): void
421
431
  ```
422
432
  See also: [ReviewActionResult](./client.md#interface-reviewactionresult)
423
433
 
@@ -428,7 +438,7 @@ This is a function run from a TaskCheckForProofs Monitor task.
428
438
  This allows the user of wallet-toolbox to 'subscribe' for transaction updates.
429
439
 
430
440
  ```ts
431
- callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
441
+ callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
432
442
  ```
433
443
  See also: [ProvenTransactionStatus](./client.md#interface-proventransactionstatus)
434
444
 
@@ -437,7 +447,7 @@ See also: [ProvenTransactionStatus](./client.md#interface-proventransactionstatu
437
447
  Called by TaskArcadeSSE when an SSE status event is received from Arcade.
438
448
 
439
449
  ```ts
440
- callOnTransactionStatusChanged(txid: string, newStatus: string): void
450
+ callOnTransactionStatusChanged(txid: string, newStatus: string): void
441
451
  ```
442
452
 
443
453
  ###### Method fetchSSEEvents
@@ -446,7 +456,7 @@ Fetch pending transaction status events from Arcade on demand.
446
456
  Call this on app open, balance refresh, transaction list view, etc.
447
457
 
448
458
  ```ts
449
- async fetchSSEEvents(): Promise<number>
459
+ async fetchSSEEvents(): Promise<number>
450
460
  ```
451
461
 
452
462
  ###### Method processHeader
@@ -457,7 +467,7 @@ To minimize reorg processing, new headers are aged before processing via TaskNew
457
467
  Therefore this handler is intentionally a no-op.
458
468
 
459
469
  ```ts
460
- processHeader(header: BlockHeader): void
470
+ processHeader(header: BlockHeader): void
461
471
  ```
462
472
  See also: [BlockHeader](./client.md#interface-blockheader)
463
473
 
@@ -468,7 +478,7 @@ Process new chain header event received from Chaintracks
468
478
  Kicks processing 'unconfirmed' and 'unmined' request processing.
469
479
 
470
480
  ```ts
471
- processNewBlockHeader(header: BlockHeader): void
481
+ processNewBlockHeader(header: BlockHeader): void
472
482
  ```
473
483
  See also: [BlockHeader](./client.md#interface-blockheader)
474
484
 
@@ -484,7 +494,7 @@ It is possible for a transaction to become invalid.
484
494
  Coinbase transactions always become invalid.
485
495
 
486
496
  ```ts
487
- processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader, deactivatedHeaders?: BlockHeader[]): void
497
+ processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader, deactivatedHeaders?: BlockHeader[]): void
488
498
  ```
489
499
  See also: [BlockHeader](./client.md#interface-blockheader)
490
500
 
@@ -499,12 +509,12 @@ export class MonitorDaemon {
499
509
  doneListening?: Promise<void>;
500
510
  doneTasks?: Promise<void>;
501
511
  stopDaemon: boolean = false;
502
- constructor(public args: MonitorDaemonSetup, public noRunTasks?: boolean)
503
- async createSetup(): Promise<void>
504
- async start(): Promise<void>
505
- async stop(): Promise<void>
506
- async destroy(): Promise<void>
507
- async runDaemon(): Promise<void>
512
+ constructor(public args: MonitorDaemonSetup, public noRunTasks?: boolean)
513
+ async createSetup(): Promise<void>
514
+ async start(): Promise<void>
515
+ async stop(): Promise<void>
516
+ async destroy(): Promise<void>
517
+ async runDaemon(): Promise<void>
508
518
  }
509
519
  ```
510
520
 
@@ -523,14 +533,14 @@ when transactions are MINED.
523
533
  export class TaskArcadeSSE extends WalletMonitorTask {
524
534
  static readonly taskName = "ArcadeSSE";
525
535
  sseClient: ArcSSEClient | null = null;
526
- constructor(monitor: Monitor)
527
- override async asyncSetup(): Promise<void>
536
+ constructor(monitor: Monitor)
537
+ override async asyncSetup(): Promise<void>
528
538
  trigger(_nowMsecsSinceEpoch: number): {
529
539
  run: boolean;
530
- }
531
- async runTask(): Promise<string>
532
- async fetchNow(): Promise<number>
533
- close(): void
540
+ }
541
+ async runTask(): Promise<string>
542
+ async fetchNow(): Promise<number>
543
+ close(): void
534
544
  }
535
545
  ```
536
546
 
@@ -541,7 +551,7 @@ See also: [ArcSSEClient](./services.md#class-arcsseclient), [Monitor](./monitor.
541
551
  Close the live stream and reject any unacknowledged monitor event.
542
552
 
543
553
  ```ts
544
- close(): void
554
+ close(): void
545
555
  ```
546
556
 
547
557
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -563,13 +573,13 @@ the original ProvenTxReq status is advanced to 'notifying'.
563
573
  ```ts
564
574
  export class TaskCheckForProofs extends WalletMonitorTask {
565
575
  static readonly taskName = "CheckForProofs";
566
- static get checkNow(): boolean
567
- static set checkNow(value: boolean)
568
- constructor(monitor: Monitor, public triggerMsecs = 0)
576
+ static get checkNow(): boolean
577
+ static set checkNow(value: boolean)
578
+ constructor(monitor: Monitor, public triggerMsecs = 0)
569
579
  trigger(_nowMsecsSinceEpoch: number): {
570
580
  run: boolean;
571
- }
572
- async runTask(): Promise<string>
581
+ }
582
+ async runTask(): Promise<string>
573
583
  }
574
584
  ```
575
585
 
@@ -582,7 +592,7 @@ Normally triggered by checkNow getting set by new block header found event from
582
592
  ```ts
583
593
  trigger(_nowMsecsSinceEpoch: number): {
584
594
  run: boolean;
585
- }
595
+ }
586
596
  ```
587
597
 
588
598
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -641,8 +651,8 @@ even if the aging schedule on the checkNow path defers them.
641
651
  ```ts
642
652
  export class TaskCheckNoSends extends WalletMonitorTask {
643
653
  static readonly taskName = "CheckNoSends";
644
- static get checkNow(): boolean
645
- static set checkNow(value: boolean)
654
+ static get checkNow(): boolean
655
+ static set checkNow(value: boolean)
646
656
  static readonly tier0FreshSkipMsecs = 5 * 60 * 1000;
647
657
  static readonly tier1EveryBlockMsecs = 60 * 60 * 1000;
648
658
  static readonly tier2HourlyMsecs = 24 * 60 * 60 * 1000;
@@ -650,12 +660,12 @@ export class TaskCheckNoSends extends WalletMonitorTask {
650
660
  static readonly tier2BlockInterval = 6;
651
661
  static readonly tier3BlockInterval = 144;
652
662
  static readonly tier4BlockInterval = 1008;
653
- static shouldCheckOnCheckNow(createdAt: Date, nowMs: number, currentBlockHeight: number, provenTxReqId: number): boolean
654
- constructor(monitor: Monitor, public triggerMsecs = Monitor.oneDay * 1)
663
+ static shouldCheckOnCheckNow(createdAt: Date, nowMs: number, currentBlockHeight: number, provenTxReqId: number): boolean
664
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneDay * 1)
655
665
  trigger(nowMsecsSinceEpoch: number): {
656
666
  run: boolean;
657
- }
658
- async runTask(): Promise<string>
667
+ }
668
+ async runTask(): Promise<string>
659
669
  }
660
670
  ```
661
671
 
@@ -682,7 +692,7 @@ across the modulo cycle). See class docstring for the full schedule
682
692
  and staggering rationale.
683
693
 
684
694
  ```ts
685
- static shouldCheckOnCheckNow(createdAt: Date, nowMs: number, currentBlockHeight: number, provenTxReqId: number): boolean
695
+ static shouldCheckOnCheckNow(createdAt: Date, nowMs: number, currentBlockHeight: number, provenTxReqId: number): boolean
686
696
  ```
687
697
 
688
698
  ###### Method trigger
@@ -692,7 +702,7 @@ Normally triggered by checkNow getting set by new block header found event from
692
702
  ```ts
693
703
  trigger(nowMsecsSinceEpoch: number): {
694
704
  run: boolean;
695
- }
705
+ }
696
706
  ```
697
707
 
698
708
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -705,11 +715,11 @@ Releases expired action-batch reservations and incomplete staged blobs.
705
715
  ```ts
706
716
  export class TaskCleanupActionBatches extends WalletMonitorTask {
707
717
  static readonly taskName = "CleanupActionBatches";
708
- constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute)
718
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute)
709
719
  trigger(nowMsecsSinceEpoch: number): {
710
720
  run: boolean;
711
- }
712
- async runTask(): Promise<string>
721
+ }
722
+ async runTask(): Promise<string>
713
723
  }
714
724
  ```
715
725
 
@@ -724,12 +734,12 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
724
734
  export class TaskClock extends WalletMonitorTask {
725
735
  static readonly taskName = "Clock";
726
736
  nextMinute: number;
727
- constructor(monitor: Monitor, public triggerMsecs = 1 * Monitor.oneSecond)
737
+ constructor(monitor: Monitor, public triggerMsecs = 1 * Monitor.oneSecond)
728
738
  trigger(_nowMsecsSinceEpoch: number): {
729
739
  run: boolean;
730
- }
731
- async runTask(): Promise<string>
732
- getNextMinute(): number
740
+ }
741
+ async runTask(): Promise<string>
742
+ getNextMinute(): number
733
743
  }
734
744
  ```
735
745
 
@@ -750,11 +760,11 @@ outputs are not spendable.
750
760
  ```ts
751
761
  export class TaskFailAbandoned extends WalletMonitorTask {
752
762
  static readonly taskName = "FailAbandoned";
753
- constructor(monitor: Monitor, public triggerMsecs = 1000 * 60 * 5)
763
+ constructor(monitor: Monitor, public triggerMsecs = 1000 * 60 * 5)
754
764
  trigger(nowMsecsSinceEpoch: number): {
755
765
  run: boolean;
756
- }
757
- async runTask(): Promise<string>
766
+ }
767
+ async runTask(): Promise<string>
758
768
  }
759
769
  ```
760
770
 
@@ -768,13 +778,13 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
768
778
  ```ts
769
779
  export class TaskMineBlock extends WalletMonitorTask {
770
780
  static readonly taskName = "MineBlock";
771
- static get mineNow(): boolean
772
- static set mineNow(value: boolean)
773
- constructor(monitor: Monitor, public triggerMsecs = 10 * Monitor.oneMinute)
781
+ static get mineNow(): boolean
782
+ static set mineNow(value: boolean)
783
+ constructor(monitor: Monitor, public triggerMsecs = 10 * Monitor.oneMinute)
774
784
  trigger(nowMsecsSinceEpoch: number): {
775
785
  run: boolean;
776
- }
777
- async runTask(): Promise<string>
786
+ }
787
+ async runTask(): Promise<string>
778
788
  }
779
789
  ```
780
790
 
@@ -788,11 +798,11 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
788
798
  ```ts
789
799
  export class TaskMonitorCallHistory extends WalletMonitorTask {
790
800
  static readonly taskName = "MonitorCallHistory";
791
- constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 12)
801
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 12)
792
802
  trigger(nowMsecsSinceEpoch: number): {
793
803
  run: boolean;
794
- }
795
- async runTask(): Promise<string>
804
+ }
805
+ async runTask(): Promise<string>
796
806
  }
797
807
  ```
798
808
 
@@ -820,13 +830,13 @@ export class TaskNewHeader extends WalletMonitorTask {
820
830
  header?: BlockHeader;
821
831
  queuedHeader?: BlockHeader;
822
832
  queuedHeaderWhen?: Date;
823
- constructor(monitor: Monitor, public triggerMsecs = 1 * Monitor.oneMinute)
824
- async getHeader(): Promise<BlockHeader>
825
- override async asyncSetup(): Promise<void>
833
+ constructor(monitor: Monitor, public triggerMsecs = 1 * Monitor.oneMinute)
834
+ async getHeader(): Promise<BlockHeader>
835
+ override async asyncSetup(): Promise<void>
826
836
  trigger(_nowMsecsSinceEpoch: number): {
827
837
  run: boolean;
828
- }
829
- async runTask(): Promise<string>
838
+ }
839
+ async runTask(): Promise<string>
830
840
  }
831
841
  ```
832
842
 
@@ -867,7 +877,7 @@ and sometimes which block. In the case of coinbase transactions, a transaction m
867
877
  also fail after a reorg.
868
878
 
869
879
  ```ts
870
- override async asyncSetup(): Promise<void>
880
+ override async asyncSetup(): Promise<void>
871
881
  ```
872
882
 
873
883
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -882,12 +892,12 @@ access to wallet keys and is safe to run in a remote storage monitor.
882
892
  ```ts
883
893
  export class TaskNoSendExpiry extends WalletMonitorTask {
884
894
  static readonly taskName = "NoSendExpiry";
885
- static requestCheck(): void
886
- constructor(monitor: Monitor, public triggerMsecs = 5 * Monitor.oneSecond)
895
+ static requestCheck(): void
896
+ constructor(monitor: Monitor, public triggerMsecs = 5 * Monitor.oneSecond)
887
897
  trigger(nowMsecsSinceEpoch: number): {
888
898
  run: boolean;
889
- }
890
- async runTask(): Promise<string>
899
+ }
900
+ async runTask(): Promise<string>
891
901
  }
892
902
  ```
893
903
 
@@ -901,13 +911,13 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
901
911
  ```ts
902
912
  export class TaskPurge extends WalletMonitorTask {
903
913
  static readonly taskName = "Purge";
904
- static get checkNow(): boolean
905
- static set checkNow(value: boolean)
906
- constructor(monitor: Monitor, public params: TaskPurgeParams, public triggerMsecs = 0)
914
+ static get checkNow(): boolean
915
+ static set checkNow(value: boolean)
916
+ constructor(monitor: Monitor, public params: TaskPurgeParams, public triggerMsecs = 0)
907
917
  trigger(nowMsecsSinceEpoch: number): {
908
918
  run: boolean;
909
- }
910
- async runTask(): Promise<string>
919
+ }
920
+ async runTask(): Promise<string>
911
921
  }
912
922
  ```
913
923
 
@@ -927,11 +937,11 @@ never mutate storage; only a provider's explicit terminal verdict does.
927
937
  export class TaskReconcilePendingTransactions extends WalletMonitorTask {
928
938
  static readonly taskName = "ReconcilePendingTransactions";
929
939
  triggerNextMsecs: number;
930
- constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 12, public reviewLimit = 100, public minAgeMinutes = 60, public triggerQuickMsecs = Monitor.oneMinute)
940
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 12, public reviewLimit = 100, public minAgeMinutes = 60, public triggerQuickMsecs = Monitor.oneMinute)
931
941
  trigger(nowMsecsSinceEpoch: number): {
932
942
  run: boolean;
933
- }
934
- async runTask(): Promise<string>
943
+ }
944
+ async runTask(): Promise<string>
935
945
  }
936
946
  ```
937
947
 
@@ -969,11 +979,11 @@ createAction fails to verify a generated beef against the chaintracker.
969
979
  export class TaskReorg extends WalletMonitorTask {
970
980
  static readonly taskName = "Reorg";
971
981
  process: DeactivedHeader[] = [];
972
- constructor(monitor: Monitor, public agedMsecs = Monitor.oneMinute * 10, public maxRetries = 3)
982
+ constructor(monitor: Monitor, public agedMsecs = Monitor.oneMinute * 10, public maxRetries = 3)
973
983
  trigger(nowMsecsSinceEpoch: number): {
974
984
  run: boolean;
975
- }
976
- async runTask(): Promise<string>
985
+ }
986
+ async runTask(): Promise<string>
977
987
  }
978
988
  ```
979
989
 
@@ -986,7 +996,7 @@ Shift aged deactivated headers onto `process` array.
986
996
  ```ts
987
997
  trigger(nowMsecsSinceEpoch: number): {
988
998
  run: boolean;
989
- }
999
+ }
990
1000
  ```
991
1001
 
992
1002
  Returns
@@ -1009,18 +1019,18 @@ back to 'unfail' so existing recovery handling can re-process them.
1009
1019
  ```ts
1010
1020
  export class TaskReviewDoubleSpends extends WalletMonitorTask {
1011
1021
  static readonly taskName = "ReviewDoubleSpends";
1012
- static get checkNow(): boolean
1013
- static set checkNow(value: boolean)
1022
+ static get checkNow(): boolean
1023
+ static set checkNow(value: boolean)
1014
1024
  triggerNextMsecs: number;
1015
- constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 12, public reviewLimit = 100, public minAgeMinutes = 60, public triggerQuickMsecs = Monitor.oneMinute * 1)
1025
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 12, public reviewLimit = 100, public minAgeMinutes = 60, public triggerQuickMsecs = Monitor.oneMinute * 1)
1016
1026
  trigger(nowMsecsSinceEpoch: number): {
1017
1027
  run: boolean;
1018
- }
1028
+ }
1019
1029
  async getLastReviewedCheckpoint(): Promise<{
1020
1030
  resumeOffset: number;
1021
1031
  expectedProvenTxReqId?: number;
1022
- } | undefined>
1023
- async runTask(): Promise<string>
1032
+ } | undefined>
1033
+ async runTask(): Promise<string>
1024
1034
  }
1025
1035
  ```
1026
1036
 
@@ -1040,16 +1050,17 @@ the currently canonical merkleRoot at a height no longer matches stored proven_t
1040
1050
  ```ts
1041
1051
  export class TaskReviewProvenTxs extends WalletMonitorTask {
1042
1052
  static readonly taskName = "ReviewProvenTxs";
1043
- static get checkNow(): boolean
1044
- static set checkNow(value: boolean)
1053
+ static get checkNow(): boolean
1054
+ static set checkNow(value: boolean)
1045
1055
  triggerNextMsecs: number;
1046
- constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 10, public maxHeightsPerRun = 100, public minBlockAge = 100, public triggerQuickMsecs = Monitor.oneMinute * 1)
1056
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 10, public maxHeightsPerRun = 100, public minBlockAge = 100, public triggerQuickMsecs = Monitor.oneMinute * 1, public maxRetryHeightsPerRun = 25)
1047
1057
  trigger(nowMsecsSinceEpoch: number): {
1048
1058
  run: boolean;
1049
- }
1050
- async runTask(): Promise<string>
1051
- async reviewHeightRange(range: HeightRange): Promise<ReviewHeightRangeResult>
1052
- async getLastReviewedHeight(): Promise<number | undefined>
1059
+ }
1060
+ async runTask(): Promise<string>
1061
+ async reviewHeightRange(range: HeightRange): Promise<ReviewHeightRangeResult>
1062
+ async getLastReviewedHeight(): Promise<number | undefined>
1063
+ async getLastCheckpoint(): Promise<Partial<ReviewProvenTxsCheckpoint> | undefined>
1053
1064
  }
1054
1065
  ```
1055
1066
 
@@ -1071,13 +1082,13 @@ Looks for reqs with 'invalid' status that have corresonding transactions with st
1071
1082
  ```ts
1072
1083
  export class TaskReviewStatus extends WalletMonitorTask {
1073
1084
  static readonly taskName = "ReviewStatus";
1074
- static get checkNow(): boolean
1075
- static set checkNow(value: boolean)
1076
- constructor(monitor: Monitor, public triggerMsecs = 1000 * 60 * 15, public agedMsecs = 1000 * 60 * 5)
1085
+ static get checkNow(): boolean
1086
+ static set checkNow(value: boolean)
1087
+ constructor(monitor: Monitor, public triggerMsecs = 1000 * 60 * 15, public agedMsecs = 1000 * 60 * 5)
1077
1088
  trigger(nowMsecsSinceEpoch: number): {
1078
1089
  run: boolean;
1079
- }
1080
- async runTask(): Promise<string>
1090
+ }
1091
+ async runTask(): Promise<string>
1081
1092
  }
1082
1093
  ```
1083
1094
 
@@ -1100,20 +1111,20 @@ The task itself is disabled and will not run on a schedule; review must be trigg
1100
1111
  ```ts
1101
1112
  export class TaskReviewUtxos extends WalletMonitorTask {
1102
1113
  static readonly taskName = "ReviewUtxos";
1103
- static get checkNow(): boolean
1104
- static set checkNow(value: boolean)
1114
+ static get checkNow(): boolean
1115
+ static set checkNow(value: boolean)
1105
1116
  public triggerMsecs: number;
1106
1117
  public userLimit: number;
1107
1118
  public userOffset: number;
1108
1119
  public tags: string[];
1109
- constructor(monitor: Monitor, triggerMsecs = 0, userLimit = 10, userOffset = 0, tags: string[] = ["all"])
1120
+ constructor(monitor: Monitor, triggerMsecs = 0, userLimit = 10, userOffset = 0, tags: string[] = ["all"])
1110
1121
  trigger(_nowMsecsSinceEpoch: number): {
1111
1122
  run: boolean;
1112
- }
1113
- async runTask(): Promise<string>
1114
- async reviewByIdentityKey(identityKey: string, mode: "all" | "change" = "all", release = false): Promise<string>
1115
- async reviewPageByIdentityKey(identityKey: string, mode: "all" | "change" = "all", release = false, pageLimit = REVIEW_PAGE_DEFAULT_LIMIT, offset = 0): Promise<TaskReviewUtxosPageResult>
1116
- async reviewManagedChangeByIdentityKey(identityKey: string): Promise<string>
1123
+ }
1124
+ async runTask(): Promise<string>
1125
+ async reviewByIdentityKey(identityKey: string, mode: "all" | "change" = "all", release = false): Promise<string>
1126
+ async reviewPageByIdentityKey(identityKey: string, mode: "all" | "change" = "all", release = false, pageLimit = REVIEW_PAGE_DEFAULT_LIMIT, offset = 0): Promise<TaskReviewUtxosPageResult>
1127
+ async reviewManagedChangeByIdentityKey(identityKey: string): Promise<string>
1117
1128
  }
1118
1129
  ```
1119
1130
 
@@ -1126,7 +1137,7 @@ has no signing authority; progressive migration occurs only during a
1126
1137
  caller-authorized createAction.
1127
1138
 
1128
1139
  ```ts
1129
- async reviewManagedChangeByIdentityKey(identityKey: string): Promise<string>
1140
+ async reviewManagedChangeByIdentityKey(identityKey: string): Promise<string>
1130
1141
  ```
1131
1142
 
1132
1143
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -1140,12 +1151,12 @@ export class TaskSendWaiting extends WalletMonitorTask {
1140
1151
  lastSendingRunMsecsSinceEpoch: number | undefined;
1141
1152
  includeSending: boolean = true;
1142
1153
  triggerNextMsecs: number;
1143
- constructor(monitor: Monitor, public triggerMsecs = Monitor.oneSecond * 8, public agedMsecs = Monitor.oneSecond * 7, public sendingMsecs = Monitor.oneMinute * 5, public triggerQuickMsecs = Monitor.oneSecond * 1, public chunkLimit = 100)
1154
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneSecond * 8, public agedMsecs = Monitor.oneSecond * 7, public sendingMsecs = Monitor.oneMinute * 5, public triggerQuickMsecs = Monitor.oneSecond * 1, public chunkLimit = 100)
1144
1155
  trigger(nowMsecsSinceEpoch: number): {
1145
1156
  run: boolean;
1146
- }
1147
- async runTask(): Promise<string>
1148
- async processUnsent(reqApis: TableProvenTxReq[], indent = 0): Promise<string>
1157
+ }
1158
+ async runTask(): Promise<string>
1159
+ async processUnsent(reqApis: TableProvenTxReq[], indent = 0): Promise<string>
1149
1160
  }
1150
1161
  ```
1151
1162
 
@@ -1154,7 +1165,7 @@ See also: [Monitor](./monitor.md#class-monitor), [TableProvenTxReq](./storage.md
1154
1165
  ###### Constructor
1155
1166
 
1156
1167
  ```ts
1157
- constructor(monitor: Monitor, public triggerMsecs = Monitor.oneSecond * 8, public agedMsecs = Monitor.oneSecond * 7, public sendingMsecs = Monitor.oneMinute * 5, public triggerQuickMsecs = Monitor.oneSecond * 1, public chunkLimit = 100)
1168
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneSecond * 8, public agedMsecs = Monitor.oneSecond * 7, public sendingMsecs = Monitor.oneMinute * 5, public triggerQuickMsecs = Monitor.oneSecond * 1, public chunkLimit = 100)
1158
1169
  ```
1159
1170
  See also: [Monitor](./monitor.md#class-monitor)
1160
1171
 
@@ -1190,7 +1201,7 @@ Add mapi responses to database table if received.
1190
1201
  Increments attempts if sending was attempted.
1191
1202
 
1192
1203
  ```ts
1193
- async processUnsent(reqApis: TableProvenTxReq[], indent = 0): Promise<string>
1204
+ async processUnsent(reqApis: TableProvenTxReq[], indent = 0): Promise<string>
1194
1205
  ```
1195
1206
  See also: [TableProvenTxReq](./storage.md#interface-tableproventxreq)
1196
1207
 
@@ -1202,11 +1213,11 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
1202
1213
  ```ts
1203
1214
  export class TaskSyncWhenIdle extends WalletMonitorTask {
1204
1215
  static readonly taskName = "SyncWhenIdle";
1205
- constructor(monitor: Monitor, public triggerMsecs = 1000 * 60 * 1)
1216
+ constructor(monitor: Monitor, public triggerMsecs = 1000 * 60 * 1)
1206
1217
  trigger(_nowMsecsSinceEpoch: number): {
1207
1218
  run: boolean;
1208
- }
1209
- async runTask(): Promise<string>
1219
+ }
1220
+ async runTask(): Promise<string>
1210
1221
  }
1211
1222
  ```
1212
1223
 
@@ -1229,17 +1240,17 @@ If it fails (to find a merklePath), returns the req status to 'invalid'.
1229
1240
  ```ts
1230
1241
  export class TaskUnFail extends WalletMonitorTask {
1231
1242
  static readonly taskName = "UnFail";
1232
- static get checkNow(): boolean
1233
- static set checkNow(value: boolean)
1234
- constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 10)
1243
+ static get checkNow(): boolean
1244
+ static set checkNow(value: boolean)
1245
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 10)
1235
1246
  trigger(nowMsecsSinceEpoch: number): {
1236
1247
  run: boolean;
1237
- }
1238
- async runTask(): Promise<string>
1248
+ }
1249
+ async runTask(): Promise<string>
1239
1250
  async unfail(reqs: TableProvenTxReq[], indent = 0): Promise<{
1240
1251
  log: string;
1241
- }>
1242
- async unfailReq(req: EntityProvenTxReq, indent: number): Promise<string>
1252
+ }>
1253
+ async unfailReq(req: EntityProvenTxReq, indent: number): Promise<string>
1243
1254
  }
1244
1255
  ```
1245
1256
 
@@ -1252,7 +1263,7 @@ See also: [EntityProvenTxReq](./storage.md#class-entityproventxreq), [Monitor](.
1252
1263
  4. set the txs outputs to spendable
1253
1264
 
1254
1265
  ```ts
1255
- async unfailReq(req: EntityProvenTxReq, indent: number): Promise<string>
1266
+ async unfailReq(req: EntityProvenTxReq, indent: number): Promise<string>
1256
1267
  ```
1257
1268
  See also: [EntityProvenTxReq](./storage.md#class-entityproventxreq)
1258
1269
 
@@ -1279,8 +1290,8 @@ This is done by accessing the wathman.storage object.
1279
1290
  export abstract class WalletMonitorTask {
1280
1291
  lastRunMsecsSinceEpoch = 0;
1281
1292
  storage: MonitorStorage;
1282
- constructor(public monitor: Monitor, public name: string)
1283
- async asyncSetup(): Promise<void>
1293
+ constructor(public monitor: Monitor, public name: string)
1294
+ async asyncSetup(): Promise<void>
1284
1295
  abstract trigger(nowMsecsSinceEpoch: number): {
1285
1296
  run: boolean;
1286
1297
  };
@@ -1305,7 +1316,7 @@ Override to handle async task setup configuration.
1305
1316
  Called before first call to `trigger`
1306
1317
 
1307
1318
  ```ts
1308
- async asyncSetup(): Promise<void>
1319
+ async asyncSetup(): Promise<void>
1309
1320
  ```
1310
1321
 
1311
1322
  ###### Method trigger
@@ -1340,7 +1351,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
1340
1351
  ##### Function: copyMonitorTags
1341
1352
 
1342
1353
  ```ts
1343
- export function copyMonitorTags(value: unknown, name = "tags"): string[]
1354
+ export function copyMonitorTags(value: unknown, name = "tags"): string[]
1344
1355
  ```
1345
1356
 
1346
1357
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -1349,7 +1360,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
1349
1360
  ##### Function: copyValidatedMonitorHeader
1350
1361
 
1351
1362
  ```ts
1352
- export function copyValidatedMonitorHeader(value: unknown, name = "header", requireProofOfWork = true): BlockHeader
1363
+ export function copyValidatedMonitorHeader(value: unknown, name = "header", requireProofOfWork = true): BlockHeader
1353
1364
  ```
1354
1365
 
1355
1366
  See also: [BlockHeader](./client.md#interface-blockheader)
@@ -1379,7 +1390,7 @@ export async function getProofs(task: WalletMonitorTask, reqs: TableProvenTxReq[
1379
1390
  status: ProvenTxReqStatus;
1380
1391
  }>;
1381
1392
  log: string;
1382
- }>
1393
+ }>
1383
1394
  ```
1384
1395
 
1385
1396
  See also: [ProvenTxReqStatus](./client.md#type-proventxreqstatus), [TableProvenTxReq](./storage.md#interface-tableproventxreq), [WalletMonitorTask](./monitor.md#class-walletmonitortask)
@@ -1394,7 +1405,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
1394
1405
  ##### Function: normalizeMonitorIdentityKey
1395
1406
 
1396
1407
  ```ts
1397
- export function normalizeMonitorIdentityKey(value: unknown, name = "identityKey"): string
1408
+ export function normalizeMonitorIdentityKey(value: unknown, name = "identityKey"): string
1398
1409
  ```
1399
1410
 
1400
1411
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -1403,7 +1414,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
1403
1414
  ##### Function: optionalMonitorInteger
1404
1415
 
1405
1416
  ```ts
1406
- export function optionalMonitorInteger(value: unknown, minimum: number, maximum: number): number | undefined
1417
+ export function optionalMonitorInteger(value: unknown, minimum: number, maximum: number): number | undefined
1407
1418
  ```
1408
1419
 
1409
1420
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -1412,7 +1423,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
1412
1423
  ##### Function: requireMonitorInteger
1413
1424
 
1414
1425
  ```ts
1415
- export function requireMonitorInteger(value: unknown, name: string, minimum: number, maximum: number): number
1426
+ export function requireMonitorInteger(value: unknown, name: string, minimum: number, maximum: number): number
1416
1427
  ```
1417
1428
 
1418
1429
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
@@ -1421,7 +1432,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
1421
1432
  ##### Function: validateMonitorOptions
1422
1433
 
1423
1434
  ```ts
1424
- export function validateMonitorOptions(value: unknown): void
1435
+ export function validateMonitorOptions(value: unknown): void
1425
1436
  ```
1426
1437
 
1427
1438
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)