@bsv/overlay 2.3.1 → 2.6.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 (201) hide show
  1. package/README.md +166 -0
  2. package/dist/cjs/mod.d.ts +3 -0
  3. package/dist/cjs/mod.d.ts.map +1 -1
  4. package/dist/cjs/mod.js +8 -1
  5. package/dist/cjs/mod.js.map +1 -1
  6. package/dist/cjs/package.json +10 -4
  7. package/dist/cjs/src/BASM.d.ts +6 -0
  8. package/dist/cjs/src/BASM.d.ts.map +1 -1
  9. package/dist/cjs/src/BASM.js +21 -8
  10. package/dist/cjs/src/BASM.js.map +1 -1
  11. package/dist/cjs/src/BASMRemote.d.ts +8 -1
  12. package/dist/cjs/src/BASMRemote.d.ts.map +1 -1
  13. package/dist/cjs/src/BASMRemote.js +179 -13
  14. package/dist/cjs/src/BASMRemote.js.map +1 -1
  15. package/dist/cjs/src/BASMValidation.d.ts +27 -0
  16. package/dist/cjs/src/BASMValidation.d.ts.map +1 -0
  17. package/dist/cjs/src/BASMValidation.js +108 -0
  18. package/dist/cjs/src/BASMValidation.js.map +1 -0
  19. package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts +11 -0
  20. package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
  21. package/dist/cjs/src/DiscoveryAdvertisementValidation.js +60 -0
  22. package/dist/cjs/src/DiscoveryAdvertisementValidation.js.map +1 -0
  23. package/dist/cjs/src/Engine.d.ts +37 -13
  24. package/dist/cjs/src/Engine.d.ts.map +1 -1
  25. package/dist/cjs/src/Engine.js +1713 -336
  26. package/dist/cjs/src/Engine.js.map +1 -1
  27. package/dist/cjs/src/EngineAdmission.d.ts +70 -0
  28. package/dist/cjs/src/EngineAdmission.d.ts.map +1 -0
  29. package/dist/cjs/src/EngineAdmission.js +297 -0
  30. package/dist/cjs/src/EngineAdmission.js.map +1 -0
  31. package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts +4 -3
  32. package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  33. package/dist/cjs/src/GASP/OverlayGASPRemote.js +27 -43
  34. package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
  35. package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts +22 -16
  36. package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  37. package/dist/cjs/src/GASP/OverlayGASPStorage.js +206 -57
  38. package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
  39. package/dist/cjs/src/RemoteSecurity.d.ts +50 -0
  40. package/dist/cjs/src/RemoteSecurity.d.ts.map +1 -0
  41. package/dist/cjs/src/RemoteSecurity.js +301 -0
  42. package/dist/cjs/src/RemoteSecurity.js.map +1 -0
  43. package/dist/cjs/src/storage/AdmissionStorage.d.ts +185 -0
  44. package/dist/cjs/src/storage/AdmissionStorage.d.ts.map +1 -0
  45. package/dist/cjs/src/storage/AdmissionStorage.js +93 -0
  46. package/dist/cjs/src/storage/AdmissionStorage.js.map +1 -0
  47. package/dist/cjs/src/storage/RecoveryContract.d.ts +50 -0
  48. package/dist/cjs/src/storage/RecoveryContract.d.ts.map +1 -0
  49. package/dist/cjs/src/storage/RecoveryContract.js +35 -0
  50. package/dist/cjs/src/storage/RecoveryContract.js.map +1 -0
  51. package/dist/cjs/src/storage/Storage.d.ts +32 -19
  52. package/dist/cjs/src/storage/Storage.d.ts.map +1 -1
  53. package/dist/cjs/src/storage/Storage.js +5 -0
  54. package/dist/cjs/src/storage/Storage.js.map +1 -1
  55. package/dist/cjs/src/storage/knex/KnexStorage.d.ts +8 -8
  56. package/dist/cjs/src/storage/knex/KnexStorage.d.ts.map +1 -1
  57. package/dist/cjs/src/storage/knex/KnexStorage.js +98 -61
  58. package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
  59. package/dist/cjs/src/storage/knex/all-migrations.d.ts.map +1 -1
  60. package/dist/cjs/src/storage/knex/all-migrations.js +5 -1
  61. package/dist/cjs/src/storage/knex/all-migrations.js.map +1 -1
  62. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
  63. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
  64. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +36 -0
  65. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
  66. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
  67. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
  68. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js +16 -0
  69. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
  70. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
  71. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
  72. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js +229 -0
  73. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
  74. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
  75. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
  76. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js +675 -0
  77. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
  78. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
  79. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
  80. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js +453 -0
  81. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
  82. package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
  83. package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
  84. package/dist/cjs/src/storage/mongo/MongoPayloadStore.js +756 -0
  85. package/dist/cjs/src/storage/mongo/MongoPayloadStore.js.map +1 -0
  86. package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts +44 -0
  87. package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
  88. package/dist/cjs/src/storage/mongo/MongoReadGuards.js +135 -0
  89. package/dist/cjs/src/storage/mongo/MongoReadGuards.js.map +1 -0
  90. package/dist/cjs/src/storage/mongo/MongoSchema.d.ts +67 -0
  91. package/dist/cjs/src/storage/mongo/MongoSchema.d.ts.map +1 -0
  92. package/dist/cjs/src/storage/mongo/MongoSchema.js +743 -0
  93. package/dist/cjs/src/storage/mongo/MongoSchema.js.map +1 -0
  94. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
  95. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
  96. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js +368 -0
  97. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
  98. package/dist/cjs/src/storage/mongo.d.ts +9 -0
  99. package/dist/cjs/src/storage/mongo.d.ts.map +1 -0
  100. package/dist/cjs/src/storage/mongo.js +25 -0
  101. package/dist/cjs/src/storage/mongo.js.map +1 -0
  102. package/dist/esm/mod.js +3 -0
  103. package/dist/esm/mod.js.map +1 -1
  104. package/dist/esm/src/BASM.js +21 -8
  105. package/dist/esm/src/BASM.js.map +1 -1
  106. package/dist/esm/src/BASMRemote.js +176 -12
  107. package/dist/esm/src/BASMRemote.js.map +1 -1
  108. package/dist/esm/src/BASMValidation.js +95 -0
  109. package/dist/esm/src/BASMValidation.js.map +1 -0
  110. package/dist/esm/src/DiscoveryAdvertisementValidation.js +57 -0
  111. package/dist/esm/src/DiscoveryAdvertisementValidation.js.map +1 -0
  112. package/dist/esm/src/Engine.js +1698 -326
  113. package/dist/esm/src/Engine.js.map +1 -1
  114. package/dist/esm/src/EngineAdmission.js +280 -0
  115. package/dist/esm/src/EngineAdmission.js.map +1 -0
  116. package/dist/esm/src/GASP/OverlayGASPRemote.js +27 -43
  117. package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
  118. package/dist/esm/src/GASP/OverlayGASPStorage.js +200 -56
  119. package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
  120. package/dist/esm/src/RemoteSecurity.js +279 -0
  121. package/dist/esm/src/RemoteSecurity.js.map +1 -0
  122. package/dist/esm/src/storage/AdmissionStorage.js +85 -0
  123. package/dist/esm/src/storage/AdmissionStorage.js.map +1 -0
  124. package/dist/esm/src/storage/RecoveryContract.js +31 -0
  125. package/dist/esm/src/storage/RecoveryContract.js.map +1 -0
  126. package/dist/esm/src/storage/Storage.js +4 -1
  127. package/dist/esm/src/storage/Storage.js.map +1 -1
  128. package/dist/esm/src/storage/knex/KnexStorage.js +98 -61
  129. package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
  130. package/dist/esm/src/storage/knex/all-migrations.js +5 -1
  131. package/dist/esm/src/storage/knex/all-migrations.js.map +1 -1
  132. package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +32 -0
  133. package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
  134. package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js +12 -0
  135. package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
  136. package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js +217 -0
  137. package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
  138. package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js +673 -0
  139. package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
  140. package/dist/esm/src/storage/mongo/MongoOverlayStorage.js +451 -0
  141. package/dist/esm/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
  142. package/dist/esm/src/storage/mongo/MongoPayloadStore.js +747 -0
  143. package/dist/esm/src/storage/mongo/MongoPayloadStore.js.map +1 -0
  144. package/dist/esm/src/storage/mongo/MongoReadGuards.js +129 -0
  145. package/dist/esm/src/storage/mongo/MongoReadGuards.js.map +1 -0
  146. package/dist/esm/src/storage/mongo/MongoSchema.js +730 -0
  147. package/dist/esm/src/storage/mongo/MongoSchema.js.map +1 -0
  148. package/dist/esm/src/storage/mongo/MongoTransactionRunner.js +371 -0
  149. package/dist/esm/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
  150. package/dist/esm/src/storage/mongo.js +9 -0
  151. package/dist/esm/src/storage/mongo.js.map +1 -0
  152. package/dist/types/mod.d.ts +3 -0
  153. package/dist/types/mod.d.ts.map +1 -1
  154. package/dist/types/src/BASM.d.ts +6 -0
  155. package/dist/types/src/BASM.d.ts.map +1 -1
  156. package/dist/types/src/BASMRemote.d.ts +8 -1
  157. package/dist/types/src/BASMRemote.d.ts.map +1 -1
  158. package/dist/types/src/BASMValidation.d.ts +27 -0
  159. package/dist/types/src/BASMValidation.d.ts.map +1 -0
  160. package/dist/types/src/DiscoveryAdvertisementValidation.d.ts +11 -0
  161. package/dist/types/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
  162. package/dist/types/src/Engine.d.ts +37 -13
  163. package/dist/types/src/Engine.d.ts.map +1 -1
  164. package/dist/types/src/EngineAdmission.d.ts +70 -0
  165. package/dist/types/src/EngineAdmission.d.ts.map +1 -0
  166. package/dist/types/src/GASP/OverlayGASPRemote.d.ts +4 -3
  167. package/dist/types/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  168. package/dist/types/src/GASP/OverlayGASPStorage.d.ts +22 -16
  169. package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  170. package/dist/types/src/RemoteSecurity.d.ts +50 -0
  171. package/dist/types/src/RemoteSecurity.d.ts.map +1 -0
  172. package/dist/types/src/storage/AdmissionStorage.d.ts +185 -0
  173. package/dist/types/src/storage/AdmissionStorage.d.ts.map +1 -0
  174. package/dist/types/src/storage/RecoveryContract.d.ts +50 -0
  175. package/dist/types/src/storage/RecoveryContract.d.ts.map +1 -0
  176. package/dist/types/src/storage/Storage.d.ts +32 -19
  177. package/dist/types/src/storage/Storage.d.ts.map +1 -1
  178. package/dist/types/src/storage/knex/KnexStorage.d.ts +8 -8
  179. package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
  180. package/dist/types/src/storage/knex/all-migrations.d.ts.map +1 -1
  181. package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
  182. package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
  183. package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
  184. package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
  185. package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
  186. package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
  187. package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
  188. package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
  189. package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
  190. package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
  191. package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
  192. package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
  193. package/dist/types/src/storage/mongo/MongoReadGuards.d.ts +44 -0
  194. package/dist/types/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
  195. package/dist/types/src/storage/mongo/MongoSchema.d.ts +67 -0
  196. package/dist/types/src/storage/mongo/MongoSchema.d.ts.map +1 -0
  197. package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
  198. package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
  199. package/dist/types/src/storage/mongo.d.ts +9 -0
  200. package/dist/types/src/storage/mongo.d.ts.map +1 -0
  201. package/package.json +11 -5
@@ -0,0 +1,50 @@
1
+ import { type HistoryFence, type StorageScope, type StorageUint64 } from './AdmissionStorage.js';
2
+ export interface RecoveryLease extends HistoryFence {
3
+ scope: StorageScope;
4
+ topic: string;
5
+ peerId: string;
6
+ jobId: string;
7
+ leaseToken: StorageUint64;
8
+ expiresAtMs: StorageUint64;
9
+ }
10
+ /** Use database time and this predicate INSIDE the checkpoint/publication CAS. */
11
+ export declare function isRecoveryLeaseCurrent(expected: RecoveryLease, current: RecoveryLease, nowMs: StorageUint64): boolean;
12
+ /** A repair's own revision/checkpoint must move together; other workers rewind. */
13
+ export interface HistoryRevisionHandoff {
14
+ expected: RecoveryLease;
15
+ checkpoint: string;
16
+ }
17
+ /** Immutable history; a current pointer must CAS both revisions and the header. */
18
+ export interface TopicAnchorRevision extends HistoryFence {
19
+ scope: StorageScope;
20
+ topic: string;
21
+ height: StorageUint64;
22
+ blockHash: string;
23
+ basmRoot: string;
24
+ admittedCount: StorageUint64;
25
+ tac: string;
26
+ previousTac: string;
27
+ policyId: string;
28
+ }
29
+ /** A local tuple does not negotiate a remote protocol. Evidence comes from S06. */
30
+ export type GaspCursorEvidence = {
31
+ mode: 'negotiated-tuple';
32
+ negotiated: boolean;
33
+ pageFinalized: boolean;
34
+ } | {
35
+ mode: 'inclusive-since';
36
+ inclusiveSemanticsProven: boolean;
37
+ equalScoreDrained: boolean;
38
+ pageFinalized: boolean;
39
+ } | {
40
+ mode: 'full-resync';
41
+ noSkipSemanticsProven: boolean;
42
+ resyncCompleted: boolean;
43
+ pageFinalized: boolean;
44
+ } | {
45
+ mode: 'unsupported';
46
+ pageFinalized: boolean;
47
+ };
48
+ /** Gate for a durable finalization/cursor transaction; never advances a cursor. */
49
+ export declare function canAdvanceGaspCursor(evidence: GaspCursorEvidence): boolean;
50
+ //# sourceMappingURL=RecoveryContract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecoveryContract.d.ts","sourceRoot":"","sources":["../../../../src/storage/RecoveryContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,aAAa,CAAA;IACzB,WAAW,EAAE,aAAa,CAAA;CAC3B;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,aAAa,GACnB,OAAO,CAcT;AAED,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,aAAa,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,mFAAmF;AACnF,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,aAAa,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,aAAa,CAAA;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,GACzE;IACE,IAAI,EAAE,iBAAiB,CAAA;IACvB,wBAAwB,EAAE,OAAO,CAAA;IACjC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAA;CACvB,GACD;IACE,IAAI,EAAE,aAAa,CAAA;IACnB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;CACvB,GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAAA;AAEnD,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAY1E"}
@@ -1,4 +1,5 @@
1
1
  import type { Output } from '../Output.js';
2
+ import type { AdmissionStorage } from './AdmissionStorage.js';
2
3
  import type { AdmittedTxRef, RawTransactionRecord, TopicAnchorTip, TopicBlockAnchor } from '../BASM.js';
3
4
  /**
4
5
  * Represents a transaction that has been applied to a topic.
@@ -48,10 +49,16 @@ export interface UnprovenAppliedTransactionCandidate {
48
49
  outputIndex: number;
49
50
  }>;
50
51
  }
52
+ export interface UnprovenQueryLimits {
53
+ maxCandidates: number;
54
+ maxOutputs: number;
55
+ }
51
56
  /**
52
57
  * Defines the Storage Engine interface used internally by the Overlay Services Engine.
53
58
  */
54
59
  export interface Storage {
60
+ /** Optional whole-admission contract. Legacy CRUD does not imply this capability. */
61
+ readonly admission?: AdmissionStorage;
55
62
  /**
56
63
  * Adds a new output to storage
57
64
  * @param utxo — The output to add
@@ -81,7 +88,7 @@ export interface Storage {
81
88
  * @param txid — TXID of the outputs to find
82
89
  * @param includeBEEF — Whether to include the BEEF data for the outputs (optional)
83
90
  */
84
- findOutputsForTransaction: (txid: string, includeBEEF?: boolean) => Promise<Output[]>;
91
+ findOutputsForTransaction: (txid: string, includeBEEF?: boolean, limit?: number) => Promise<Output[]>;
85
92
  /**
86
93
  * Finds current UTXOs that have been admitted into a given topic
87
94
  * @param topic - The topic for which we want to find Unspent Transaction Outputs (UTXOs).
@@ -99,19 +106,23 @@ export interface Storage {
99
106
  */
100
107
  deleteOutput: (txid: string, outputIndex: number, topic: string) => Promise<void>;
101
108
  /**
102
- * Updates a UTXO as spent
103
- * @param txid — TXID of the output to update
104
- * @param outputIndex — Index of the output to update
105
- * @param topic — Topic in which the output should be updated
106
- */
107
- markUTXOAsSpent: (txid: string, outputIndex: number, topic: string) => Promise<void>;
108
- /**
109
- * Updates which outputs are consumed by this output
110
- * @param txid — TXID of the output to update
111
- * @param outputIndex Index of the output to update
112
- * @param topic — Topic in which the output should be updated
113
- * @param consumedBy The new set of outputs consumed by this output
114
- */
109
+ * Updates a UTXO as spent
110
+ * @param txid — TXID of the output to update
111
+ * @param outputIndex — Index of the output to update
112
+ * @param topic — Topic in which the output should be updated
113
+ * @param spendingTxid — Optional transaction claiming the spend. Repeating
114
+ * the same claim is idempotent; a different spender must still fail.
115
+ * @throws If the topical output does not exist or was spent by a different
116
+ * transaction. Storage implementations must make this check and update atomic.
117
+ */
118
+ markUTXOAsSpent: (txid: string, outputIndex: number, topic: string, spendingTxid?: string) => Promise<void>;
119
+ /**
120
+ * Updates which outputs are consumed by this output
121
+ * @param txid — TXID of the output to update
122
+ * @param outputIndex — Index of the output to update
123
+ * @param topic — Topic in which the output should be updated
124
+ * @param consumedBy — The new set of outputs consumed by this output
125
+ */
115
126
  updateConsumedBy: (txid: string, outputIndex: number, topic: string, consumedBy: Array<{
116
127
  txid: string;
117
128
  outputIndex: number;
@@ -153,7 +164,7 @@ export interface Storage {
153
164
  /**
154
165
  * Returns proven topic transactions admitted in one block, in canonical block order.
155
166
  */
156
- findAdmittedTransactionsForBlock?: (topic: string, blockHeight: number, blockHash?: string) => Promise<AdmittedTxRef[]>;
167
+ findAdmittedTransactionsForBlock?: (topic: string, blockHeight: number, blockHash?: string, limit?: number) => Promise<AdmittedTxRef[]>;
157
168
  /**
158
169
  * Persists or replaces a topic block anchor for one height.
159
170
  */
@@ -165,7 +176,7 @@ export interface Storage {
165
176
  /**
166
177
  * Returns topic block anchors across a closed height range.
167
178
  */
168
- findTopicBlockAnchors?: (topic: string, fromHeight: number, toHeight: number) => Promise<TopicBlockAnchor[]>;
179
+ findTopicBlockAnchors?: (topic: string, fromHeight: number, toHeight: number, limit?: number) => Promise<TopicBlockAnchor[]>;
169
180
  /**
170
181
  * Returns the latest known topic anchor tip.
171
182
  */
@@ -188,7 +199,7 @@ export interface Storage {
188
199
  /**
189
200
  * Finds topic-applied transactions with no direct proof old enough to evict.
190
201
  */
191
- findUnprovenAppliedTransactions?: (cutoffHeight: number, topic?: string) => Promise<UnprovenAppliedTransactionCandidate[]>;
202
+ findUnprovenAppliedTransactions?: (cutoffHeight: number, topic?: string, limits?: UnprovenQueryLimits) => Promise<UnprovenAppliedTransactionCandidate[]>;
192
203
  /**
193
204
  * Deletes a topic-applied transaction record.
194
205
  */
@@ -197,7 +208,7 @@ export interface Storage {
197
208
  * Returns proven topic-applied transactions whose proof anchors to the given
198
209
  * block hash. Used to demote admissions when that block is reorged out.
199
210
  */
200
- findProvenAppliedTransactionsByBlockHash?: (blockHash: string) => Promise<Array<{
211
+ findProvenAppliedTransactionsByBlockHash?: (blockHash: string, limit?: number) => Promise<Array<{
201
212
  txid: string;
202
213
  topic: string;
203
214
  blockHeight: number;
@@ -206,7 +217,7 @@ export interface Storage {
206
217
  * Returns proven topic-applied transactions in a closed block-height range,
207
218
  * including the proof's block hash and merkle root for revalidation sweeps.
208
219
  */
209
- findProvenAppliedTransactionsInRange?: (fromHeight: number, toHeight: number, topic?: string) => Promise<Array<{
220
+ findProvenAppliedTransactionsInRange?: (fromHeight: number, toHeight: number, topic?: string, limit?: number) => Promise<Array<{
210
221
  txid: string;
211
222
  topic: string;
212
223
  blockHeight: number;
@@ -234,4 +245,6 @@ export interface Storage {
234
245
  */
235
246
  getLastInteraction: (host: string, topic: string) => Promise<number>;
236
247
  }
248
+ /** True when the optional admission field is present. Protocol detection is separate. */
249
+ export declare function storageHasAdmission(storage: Storage): boolean;
237
250
  //# sourceMappingURL=Storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../../../src/storage/Storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../../../src/storage/Storage.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Storage, type AppliedTransaction, type AppliedTransactionProofUpdate, type StoredTransactionRecord, type UnprovenAppliedTransactionCandidate } from '../Storage.js';
1
+ import { Storage, type AppliedTransaction, type AppliedTransactionProofUpdate, type StoredTransactionRecord, type UnprovenAppliedTransactionCandidate, type UnprovenQueryLimits } from '../Storage.js';
2
2
  import { Knex } from 'knex';
3
3
  import type { Output } from '../../Output.js';
4
4
  import { type AdmittedTxRef, type RawTransactionRecord, type TopicAnchorTip, type TopicBlockAnchor } from '../../BASM.js';
@@ -16,11 +16,11 @@ export declare class KnexStorage implements Storage {
16
16
  txid: string;
17
17
  outputIndex: number;
18
18
  }>, includeBEEF?: boolean): Promise<Output[]>;
19
- findOutputsForTransaction(txid: string, includeBEEF?: boolean): Promise<Output[]>;
19
+ findOutputsForTransaction(txid: string, includeBEEF?: boolean, limit?: number): Promise<Output[]>;
20
20
  findUTXOsForTopic(topic: string, since?: number, limit?: number, includeBEEF?: boolean): Promise<Output[]>;
21
21
  deleteOutput(txid: string, outputIndex: number, topic: string): Promise<void>;
22
22
  insertOutput(output: Output): Promise<void>;
23
- markUTXOAsSpent(txid: string, outputIndex: number, topic?: string): Promise<void>;
23
+ markUTXOAsSpent(txid: string, outputIndex: number, topic: string, spendingTxid?: string): Promise<void>;
24
24
  updateConsumedBy(txid: string, outputIndex: number, topic: string, consumedBy: Array<{
25
25
  txid: string;
26
26
  outputIndex: number;
@@ -36,10 +36,10 @@ export declare class KnexStorage implements Storage {
36
36
  }): Promise<boolean>;
37
37
  updateLastInteraction(host: string, topic: string, since: number): Promise<void>;
38
38
  getLastInteraction(host: string, topic: string): Promise<number>;
39
- findAdmittedTransactionsForBlock(topic: string, blockHeight: number, blockHash?: string): Promise<AdmittedTxRef[]>;
39
+ findAdmittedTransactionsForBlock(topic: string, blockHeight: number, blockHash?: string, limit?: number): Promise<AdmittedTxRef[]>;
40
40
  upsertTopicBlockAnchor(anchor: TopicBlockAnchor): Promise<void>;
41
41
  findTopicBlockAnchor(topic: string, blockHeight: number, blockHash?: string): Promise<TopicBlockAnchor | undefined>;
42
- findTopicBlockAnchors(topic: string, fromHeight: number, toHeight: number): Promise<TopicBlockAnchor[]>;
42
+ findTopicBlockAnchors(topic: string, fromHeight: number, toHeight: number, limit?: number): Promise<TopicBlockAnchor[]>;
43
43
  findTopicAnchorTip(topic: string): Promise<TopicAnchorTip | undefined>;
44
44
  findRawTransactions(txids: string[]): Promise<RawTransactionRecord[]>;
45
45
  findTransactionMerklePaths(txids: string[]): Promise<Array<{
@@ -50,14 +50,14 @@ export declare class KnexStorage implements Storage {
50
50
  blockIndex?: number;
51
51
  merkleRoot?: string;
52
52
  }>>;
53
- findUnprovenAppliedTransactions(cutoffHeight: number, topic?: string): Promise<UnprovenAppliedTransactionCandidate[]>;
53
+ findUnprovenAppliedTransactions(cutoffHeight: number, topic?: string, limits?: UnprovenQueryLimits): Promise<UnprovenAppliedTransactionCandidate[]>;
54
54
  deleteAppliedTransaction(txid: string, topic: string): Promise<void>;
55
- findProvenAppliedTransactionsByBlockHash(blockHash: string): Promise<Array<{
55
+ findProvenAppliedTransactionsByBlockHash(blockHash: string, limit?: number): Promise<Array<{
56
56
  txid: string;
57
57
  topic: string;
58
58
  blockHeight: number;
59
59
  }>>;
60
- findProvenAppliedTransactionsInRange(fromHeight: number, toHeight: number, topic?: string): Promise<Array<{
60
+ findProvenAppliedTransactionsInRange(fromHeight: number, toHeight: number, topic?: string, limit?: number): Promise<Array<{
61
61
  txid: string;
62
62
  topic: string;
63
63
  blockHeight: number;
@@ -1 +1 @@
1
- {"version":3,"file":"KnexStorage.d.ts","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KnexStorage.d.ts","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"all-migrations.d.ts","sourceRoot":"","sources":["../../../../../src/storage/knex/all-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAW3B;;GAEG;AACH,UAAU,SAAS;IACjB,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,QAAA,MAAM,aAAa,EAAE,SAAS,EAU7B,CAAA;eAEc,aAAa"}
1
+ {"version":3,"file":"all-migrations.d.ts","sourceRoot":"","sources":["../../../../../src/storage/knex/all-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAwC3B;;GAEG;AACH,UAAU,SAAS;IACjB,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,QAAA,MAAM,aAAa,EAAE,SAAS,EAY7B,CAAA;eAEc,aAAa"}
@@ -0,0 +1,4 @@
1
+ import type { Knex } from 'knex';
2
+ export declare function up(knex: Knex): Promise<void>;
3
+ export declare function down(knex: Knex): Promise<void>;
4
+ //# sourceMappingURL=2026-09-17-001-topical-uniqueness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2026-09-17-001-topical-uniqueness.d.ts","sourceRoot":"","sources":["../../../../../../src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAwBhC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAUlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpD"}
@@ -0,0 +1,5 @@
1
+ import type { Knex } from 'knex';
2
+ /** Add the transaction identity needed to distinguish retries from double spends. */
3
+ export declare function up(knex: Knex): Promise<void>;
4
+ export declare function down(knex: Knex): Promise<void>;
5
+ //# sourceMappingURL=2026-09-20-001-spent-by.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2026-09-20-001-spent-by.d.ts","sourceRoot":"","sources":["../../../../../../src/storage/knex/migrations/2026-09-20-001-spent-by.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAEhC,qFAAqF;AACrF,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD"}
@@ -0,0 +1,18 @@
1
+ import { type AdmissionCommit, type AdmissionCommitResult, type AdmissionOutboxIntent, type AdmissionPayloadRef, type AdmissionReceipt, type StorageScope } from '../AdmissionStorage.js';
2
+ export type AdmissionRejectionCode = Extract<AdmissionCommitResult, {
3
+ state: 'rejected';
4
+ }>['code'];
5
+ export declare class AdmissionRejectedError extends Error {
6
+ readonly code: AdmissionRejectionCode;
7
+ constructor(code: AdmissionRejectionCode);
8
+ }
9
+ export declare const rejectAdmission: (code: AdmissionRejectionCode) => never;
10
+ export declare const sameScope: (left: StorageScope, right: StorageScope) => boolean;
11
+ export declare const samePayload: (left: AdmissionPayloadRef | undefined, right: AdmissionPayloadRef) => boolean;
12
+ export declare const admissionPlanPayloads: (plan: AdmissionCommit) => AdmissionPayloadRef[];
13
+ export declare const isBoundSteak: (plan: AdmissionCommit) => boolean;
14
+ export declare const validateAdmissionPlan: (plan: AdmissionCommit) => AdmissionRejectionCode | undefined;
15
+ export declare const admissionReceiptFor: (plan: AdmissionCommit, enlistedTargets: readonly string[]) => AdmissionReceipt;
16
+ export declare const lookupOutboxIntents: (plan: AdmissionCommit) => AdmissionOutboxIntent[];
17
+ export declare const propagationOutboxIntents: (plan: AdmissionCommit) => AdmissionOutboxIntent[];
18
+ //# sourceMappingURL=MongoAdmissionPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoAdmissionPlan.d.ts","sourceRoot":"","sources":["../../../../../src/storage/mongo/MongoAdmissionPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAG1B,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAA;AAE/B,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC,MAAM,CAAC,CAAA;AAElG,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IAErC,YAAY,IAAI,EAAE,sBAAsB,EAIvC;CACF;AAED,eAAO,MAAM,eAAe,SAAU,sBAAsB,KAAG,KAE9D,CAAA;AAuBD,eAAO,MAAM,SAAS,SAAU,YAAY,SAAS,YAAY,KAAG,OAGtC,CAAA;AAE9B,eAAO,MAAM,WAAW,SAChB,mBAAmB,GAAG,SAAS,SAC9B,mBAAmB,KACzB,OAGwB,CAAA;AAE3B,eAAO,MAAM,qBAAqB,SAAU,eAAe,KAAG,mBAAmB,EAQhF,CAAA;AAcD,eAAO,MAAM,YAAY,SAAU,eAAe,KAAG,OAuBpD,CAAA;AAmHD,eAAO,MAAM,qBAAqB,SAC1B,eAAe,KACpB,sBAAsB,GAAG,SAU3B,CAAA;AAED,eAAO,MAAM,mBAAmB,SACxB,eAAe,mBACJ,SAAS,MAAM,EAAE,KACjC,gBAmBF,CAAA;AAED,eAAO,MAAM,mBAAmB,SAAU,eAAe,KAAG,qBAAqB,EACzB,CAAA;AAExD,eAAO,MAAM,wBAAwB,SAAU,eAAe,KAAG,qBAAqB,EACzB,CAAA"}
@@ -0,0 +1,112 @@
1
+ import type { Collection, Db, Document } from 'mongodb';
2
+ import { type AdmissionCommit, type AdmissionCommitResult, type AdmissionOperationKey, type AdmissionOutpoint, type AdmissionPayloadRef, type AdmissionReconcileResult, type AdmissionStorage, type StorageScope } from '../AdmissionStorage.js';
3
+ import type { RecoveryLease } from '../RecoveryContract.js';
4
+ import { MongoPayloadStore } from './MongoPayloadStore.js';
5
+ import { MongoReadGuards } from './MongoReadGuards.js';
6
+ import { MongoTransactionRunner, type MongoTransactionContext, type MongoTransactionOptions } from './MongoTransactionRunner.js';
7
+ export interface MongoEnlistedLookupIndex {
8
+ readonly protocol: 'overlay-mongo-index-v1';
9
+ readonly target: string;
10
+ apply: (context: MongoTransactionContext, plan: AdmissionCommit) => Promise<void>;
11
+ }
12
+ export interface MongoAdmissionStorageOptions {
13
+ runner?: MongoTransactionRunner;
14
+ payloads?: MongoPayloadStore;
15
+ readGuards?: MongoReadGuards;
16
+ enlistedIndexes?: MongoEnlistedLookupIndex[];
17
+ projector?: unknown;
18
+ }
19
+ export interface MongoOutboxLease {
20
+ eventId: string;
21
+ kind: 'lookup' | 'propagation';
22
+ target: string;
23
+ payloads: AdmissionPayloadRef[];
24
+ }
25
+ interface GenerationDocument extends Document {
26
+ _id: string;
27
+ topic: string;
28
+ chainEpoch: string;
29
+ topicHistoryGeneration: string;
30
+ policyId: string;
31
+ }
32
+ interface JobDocument extends Document {
33
+ _id: string;
34
+ topic: string;
35
+ peerId: string;
36
+ jobId: string;
37
+ chainEpoch: string;
38
+ topicHistoryGeneration: string;
39
+ leaseToken: string;
40
+ leaseUntil: Date;
41
+ state: string;
42
+ checkpoint: string;
43
+ }
44
+ interface OutboxDocument extends Document {
45
+ _id: string;
46
+ eventId: string;
47
+ target: string;
48
+ state: string;
49
+ nextAttemptAt?: Date;
50
+ leaseUntil?: Date;
51
+ }
52
+ /**
53
+ * Opt-in Mongo AdmissionStorage. Engine submit uses this only when
54
+ * getAdmissionStorage(storage) observes overlay-admission-v1.
55
+ */
56
+ export declare class MongoAdmissionStorage implements AdmissionStorage {
57
+ private readonly db;
58
+ readonly protocol: 'overlay-admission-v1';
59
+ readonly scope: StorageScope;
60
+ private readonly runner;
61
+ private readonly payloads;
62
+ private readonly guards;
63
+ private readonly enlisted;
64
+ private readonly projector;
65
+ private readonly peers;
66
+ constructor(db: Db, scope: StorageScope, options?: MongoAdmissionStorageOptions);
67
+ enlistedTargets(): string[];
68
+ commitAdmission(plan: AdmissionCommit): Promise<AdmissionCommitResult>;
69
+ private runAdmissionWithWriteConflictRetry;
70
+ private waitForPending;
71
+ reconcileAdmission(key: AdmissionOperationKey, attemptId?: string, options?: MongoTransactionOptions): Promise<AdmissionReconcileResult>;
72
+ close(): Promise<void>;
73
+ private peerFor;
74
+ claimOutbox(kind: 'lookup' | 'propagation', leaseMS?: number): Promise<MongoOutboxLease | null>;
75
+ acknowledgeOutbox(kind: 'lookup' | 'propagation', eventId: string): Promise<void>;
76
+ private asResult;
77
+ private prepareReadGuards;
78
+ private publishHistoryUpdatePayloads;
79
+ private historyUpdateRecord;
80
+ private applyPlan;
81
+ private assertReadyPayloads;
82
+ private checkReads;
83
+ private checkHistory;
84
+ private assertAppliedAvailable;
85
+ private assertOutboxAvailable;
86
+ private applySpend;
87
+ private applyEviction;
88
+ private insertOutput;
89
+ private insertEdge;
90
+ private insertApplied;
91
+ private applyHistoryUpdate;
92
+ private historyUpdateSlot;
93
+ private replaceHistoryPin;
94
+ private applyHandoff;
95
+ private upsertTransaction;
96
+ private insertOutbox;
97
+ private pin;
98
+ private outboxPayloads;
99
+ payloadId(ref: Pick<AdmissionPayloadRef, 'kind' | 'digest'>): string;
100
+ outputId(topic: string, outpoint: AdmissionOutpoint): string;
101
+ private appliedId;
102
+ generationId(topic: string): string;
103
+ jobId(lease: Pick<RecoveryLease, 'topic' | 'peerId' | 'jobId'>): string;
104
+ outboxId(kind: 'lookup' | 'propagation', eventId: string): string;
105
+ private outputs;
106
+ private applied;
107
+ generations(): Collection<GenerationDocument>;
108
+ jobs(): Collection<JobDocument>;
109
+ outbox(kind: 'lookup' | 'propagation'): Collection<OutboxDocument>;
110
+ }
111
+ export {};
112
+ //# sourceMappingURL=MongoAdmissionStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoAdmissionStorage.d.ts","sourceRoot":"","sources":["../../../../../src/storage/mongo/MongoAdmissionStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { Db } from 'mongodb';
2
+ import type { Output } from '../../Output.js';
3
+ import type { AppliedTransaction, Storage } from '../Storage.js';
4
+ import { type AdmissionPayloadRef, type HistoryFence, type StorageScope } from '../AdmissionStorage.js';
5
+ import { MongoAdmissionStorage, type MongoAdmissionStorageOptions } from './MongoAdmissionStorage.js';
6
+ /**
7
+ * Opt-in Mongo Storage adapter that advertises overlay-admission-v1 only because
8
+ * commitAdmission actually honors majority ack, spends, history, and outbox.
9
+ */
10
+ export declare class MongoOverlayStorage implements Storage {
11
+ private readonly db;
12
+ readonly admission: MongoAdmissionStorage;
13
+ readonly admissionScope: StorageScope;
14
+ private readonly payloads;
15
+ constructor(db: Db, scope: StorageScope, options?: MongoAdmissionStorageOptions);
16
+ enlistedIndexTargets(): readonly string[];
17
+ getHistoryFence(topic: string): Promise<HistoryFence>;
18
+ publishAdmissionPayload(input: {
19
+ kind: AdmissionPayloadRef['kind'];
20
+ bytes: Uint8Array;
21
+ txid?: string;
22
+ }): Promise<AdmissionPayloadRef>;
23
+ close(): Promise<void>;
24
+ insertOutput(utxo: Output): Promise<void>;
25
+ private persistTransactionBeef;
26
+ findOutput(txid: string, outputIndex: number, topic?: string, spent?: boolean, includeBEEF?: boolean): Promise<Output | null>;
27
+ findOutputsForTransaction(txid: string, includeBEEF?: boolean): Promise<Output[]>;
28
+ findUTXOsForTopic(topic: string, since?: number, limit?: number, includeBEEF?: boolean): Promise<Output[]>;
29
+ /**
30
+ * Maps a batch of raw output documents to `Output`s, dropping any that
31
+ * `toOutput` treats as non-serving (see its docstring). Every current
32
+ * caller's query already excludes `state: 'evicted'`, so this filter is
33
+ * defense in depth rather than the primary guard.
34
+ */
35
+ private toOutputs;
36
+ deleteOutput(txid: string, outputIndex: number, topic: string): Promise<void>;
37
+ markUTXOAsSpent(txid: string, outputIndex: number, topic: string, spendingTxid?: string): Promise<void>;
38
+ updateConsumedBy(txid: string, outputIndex: number, topic: string, consumedBy: Array<{
39
+ txid: string;
40
+ outputIndex: number;
41
+ }>): Promise<void>;
42
+ updateTransactionBEEF(txid: string, _beef: number[]): Promise<void>;
43
+ insertAppliedTransaction(tx: AppliedTransaction): Promise<void>;
44
+ doesAppliedTransactionExist(tx: AppliedTransaction): Promise<boolean>;
45
+ updateLastInteraction(host: string, topic: string, since: number): Promise<void>;
46
+ getLastInteraction(host: string, topic: string): Promise<number>;
47
+ private outputId;
48
+ private toSafeNumber;
49
+ /**
50
+ * Maps a raw output document to an `Output`, or `null` when the document
51
+ * is not currently serving as overlay state. An admission eviction leaves
52
+ * its row in place (state: 'evicted') for audit/history, and it must never
53
+ * be reported as a live, unspent output — every caller that reaches here
54
+ * must treat a `null` result the same as "not found", regardless of
55
+ * whether its own query already excluded `evicted` rows.
56
+ */
57
+ private toOutput;
58
+ /**
59
+ * Reads consumption edges persisted for this output (by either
60
+ * MongoAdmissionStorage.insertEdge during a commit, or
61
+ * MongoOverlayStorage.updateConsumedBy on the classic storage path) and
62
+ * returns the opposite endpoint of each matching edge: querying by the
63
+ * consumer side returns `outputsConsumed` (what this output's transaction
64
+ * spent), and querying by the source side returns `consumedBy` (what has
65
+ * since spent this output).
66
+ */
67
+ private readConsumptionEdges;
68
+ private readScript;
69
+ private readBeef;
70
+ }
71
+ //# sourceMappingURL=MongoOverlayStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoOverlayStorage.d.ts","sourceRoot":"","sources":["../../../../../src/storage/mongo/MongoOverlayStorage.ts"],"names":[],"mappings":"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"}