@bsv/overlay 2.3.0 → 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 (207) hide show
  1. package/LICENSES/Open-BSV-License-4-standard-pre-2026.txt +28 -0
  2. package/README.md +171 -1
  3. package/THIRD_PARTY_NOTICES.md +49 -0
  4. package/dist/cjs/mod.d.ts +4 -1
  5. package/dist/cjs/mod.d.ts.map +1 -1
  6. package/dist/cjs/mod.js +8 -1
  7. package/dist/cjs/mod.js.map +1 -1
  8. package/dist/cjs/package.json +13 -5
  9. package/dist/cjs/src/BASM.d.ts +6 -0
  10. package/dist/cjs/src/BASM.d.ts.map +1 -1
  11. package/dist/cjs/src/BASM.js +21 -8
  12. package/dist/cjs/src/BASM.js.map +1 -1
  13. package/dist/cjs/src/BASMRemote.d.ts +8 -1
  14. package/dist/cjs/src/BASMRemote.d.ts.map +1 -1
  15. package/dist/cjs/src/BASMRemote.js +179 -13
  16. package/dist/cjs/src/BASMRemote.js.map +1 -1
  17. package/dist/cjs/src/BASMValidation.d.ts +27 -0
  18. package/dist/cjs/src/BASMValidation.d.ts.map +1 -0
  19. package/dist/cjs/src/BASMValidation.js +108 -0
  20. package/dist/cjs/src/BASMValidation.js.map +1 -0
  21. package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts +11 -0
  22. package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
  23. package/dist/cjs/src/DiscoveryAdvertisementValidation.js +60 -0
  24. package/dist/cjs/src/DiscoveryAdvertisementValidation.js.map +1 -0
  25. package/dist/cjs/src/Engine.d.ts +38 -13
  26. package/dist/cjs/src/Engine.d.ts.map +1 -1
  27. package/dist/cjs/src/Engine.js +1735 -336
  28. package/dist/cjs/src/Engine.js.map +1 -1
  29. package/dist/cjs/src/EngineAdmission.d.ts +70 -0
  30. package/dist/cjs/src/EngineAdmission.d.ts.map +1 -0
  31. package/dist/cjs/src/EngineAdmission.js +297 -0
  32. package/dist/cjs/src/EngineAdmission.js.map +1 -0
  33. package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts +4 -3
  34. package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  35. package/dist/cjs/src/GASP/OverlayGASPRemote.js +27 -43
  36. package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
  37. package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts +22 -16
  38. package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  39. package/dist/cjs/src/GASP/OverlayGASPStorage.js +206 -57
  40. package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
  41. package/dist/cjs/src/RemoteSecurity.d.ts +50 -0
  42. package/dist/cjs/src/RemoteSecurity.d.ts.map +1 -0
  43. package/dist/cjs/src/RemoteSecurity.js +301 -0
  44. package/dist/cjs/src/RemoteSecurity.js.map +1 -0
  45. package/dist/cjs/src/TopicManager.d.ts +13 -3
  46. package/dist/cjs/src/TopicManager.d.ts.map +1 -1
  47. package/dist/cjs/src/storage/AdmissionStorage.d.ts +185 -0
  48. package/dist/cjs/src/storage/AdmissionStorage.d.ts.map +1 -0
  49. package/dist/cjs/src/storage/AdmissionStorage.js +93 -0
  50. package/dist/cjs/src/storage/AdmissionStorage.js.map +1 -0
  51. package/dist/cjs/src/storage/RecoveryContract.d.ts +50 -0
  52. package/dist/cjs/src/storage/RecoveryContract.d.ts.map +1 -0
  53. package/dist/cjs/src/storage/RecoveryContract.js +35 -0
  54. package/dist/cjs/src/storage/RecoveryContract.js.map +1 -0
  55. package/dist/cjs/src/storage/Storage.d.ts +32 -19
  56. package/dist/cjs/src/storage/Storage.d.ts.map +1 -1
  57. package/dist/cjs/src/storage/Storage.js +5 -0
  58. package/dist/cjs/src/storage/Storage.js.map +1 -1
  59. package/dist/cjs/src/storage/knex/KnexStorage.d.ts +8 -8
  60. package/dist/cjs/src/storage/knex/KnexStorage.d.ts.map +1 -1
  61. package/dist/cjs/src/storage/knex/KnexStorage.js +98 -61
  62. package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
  63. package/dist/cjs/src/storage/knex/all-migrations.d.ts.map +1 -1
  64. package/dist/cjs/src/storage/knex/all-migrations.js +5 -1
  65. package/dist/cjs/src/storage/knex/all-migrations.js.map +1 -1
  66. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
  67. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
  68. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +36 -0
  69. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
  70. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
  71. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
  72. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js +16 -0
  73. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
  74. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
  75. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
  76. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js +229 -0
  77. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
  78. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
  79. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
  80. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js +675 -0
  81. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
  82. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
  83. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
  84. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js +453 -0
  85. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
  86. package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
  87. package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
  88. package/dist/cjs/src/storage/mongo/MongoPayloadStore.js +756 -0
  89. package/dist/cjs/src/storage/mongo/MongoPayloadStore.js.map +1 -0
  90. package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts +44 -0
  91. package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
  92. package/dist/cjs/src/storage/mongo/MongoReadGuards.js +135 -0
  93. package/dist/cjs/src/storage/mongo/MongoReadGuards.js.map +1 -0
  94. package/dist/cjs/src/storage/mongo/MongoSchema.d.ts +67 -0
  95. package/dist/cjs/src/storage/mongo/MongoSchema.d.ts.map +1 -0
  96. package/dist/cjs/src/storage/mongo/MongoSchema.js +743 -0
  97. package/dist/cjs/src/storage/mongo/MongoSchema.js.map +1 -0
  98. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
  99. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
  100. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js +368 -0
  101. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
  102. package/dist/cjs/src/storage/mongo.d.ts +9 -0
  103. package/dist/cjs/src/storage/mongo.d.ts.map +1 -0
  104. package/dist/cjs/src/storage/mongo.js +25 -0
  105. package/dist/cjs/src/storage/mongo.js.map +1 -0
  106. package/dist/esm/mod.js +3 -0
  107. package/dist/esm/mod.js.map +1 -1
  108. package/dist/esm/src/BASM.js +21 -8
  109. package/dist/esm/src/BASM.js.map +1 -1
  110. package/dist/esm/src/BASMRemote.js +176 -12
  111. package/dist/esm/src/BASMRemote.js.map +1 -1
  112. package/dist/esm/src/BASMValidation.js +95 -0
  113. package/dist/esm/src/BASMValidation.js.map +1 -0
  114. package/dist/esm/src/DiscoveryAdvertisementValidation.js +57 -0
  115. package/dist/esm/src/DiscoveryAdvertisementValidation.js.map +1 -0
  116. package/dist/esm/src/Engine.js +1720 -326
  117. package/dist/esm/src/Engine.js.map +1 -1
  118. package/dist/esm/src/EngineAdmission.js +280 -0
  119. package/dist/esm/src/EngineAdmission.js.map +1 -0
  120. package/dist/esm/src/GASP/OverlayGASPRemote.js +27 -43
  121. package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
  122. package/dist/esm/src/GASP/OverlayGASPStorage.js +200 -56
  123. package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
  124. package/dist/esm/src/RemoteSecurity.js +279 -0
  125. package/dist/esm/src/RemoteSecurity.js.map +1 -0
  126. package/dist/esm/src/storage/AdmissionStorage.js +85 -0
  127. package/dist/esm/src/storage/AdmissionStorage.js.map +1 -0
  128. package/dist/esm/src/storage/RecoveryContract.js +31 -0
  129. package/dist/esm/src/storage/RecoveryContract.js.map +1 -0
  130. package/dist/esm/src/storage/Storage.js +4 -1
  131. package/dist/esm/src/storage/Storage.js.map +1 -1
  132. package/dist/esm/src/storage/knex/KnexStorage.js +98 -61
  133. package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
  134. package/dist/esm/src/storage/knex/all-migrations.js +5 -1
  135. package/dist/esm/src/storage/knex/all-migrations.js.map +1 -1
  136. package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +32 -0
  137. package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
  138. package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js +12 -0
  139. package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
  140. package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js +217 -0
  141. package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
  142. package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js +673 -0
  143. package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
  144. package/dist/esm/src/storage/mongo/MongoOverlayStorage.js +451 -0
  145. package/dist/esm/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
  146. package/dist/esm/src/storage/mongo/MongoPayloadStore.js +747 -0
  147. package/dist/esm/src/storage/mongo/MongoPayloadStore.js.map +1 -0
  148. package/dist/esm/src/storage/mongo/MongoReadGuards.js +129 -0
  149. package/dist/esm/src/storage/mongo/MongoReadGuards.js.map +1 -0
  150. package/dist/esm/src/storage/mongo/MongoSchema.js +730 -0
  151. package/dist/esm/src/storage/mongo/MongoSchema.js.map +1 -0
  152. package/dist/esm/src/storage/mongo/MongoTransactionRunner.js +371 -0
  153. package/dist/esm/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
  154. package/dist/esm/src/storage/mongo.js +9 -0
  155. package/dist/esm/src/storage/mongo.js.map +1 -0
  156. package/dist/types/mod.d.ts +4 -1
  157. package/dist/types/mod.d.ts.map +1 -1
  158. package/dist/types/src/BASM.d.ts +6 -0
  159. package/dist/types/src/BASM.d.ts.map +1 -1
  160. package/dist/types/src/BASMRemote.d.ts +8 -1
  161. package/dist/types/src/BASMRemote.d.ts.map +1 -1
  162. package/dist/types/src/BASMValidation.d.ts +27 -0
  163. package/dist/types/src/BASMValidation.d.ts.map +1 -0
  164. package/dist/types/src/DiscoveryAdvertisementValidation.d.ts +11 -0
  165. package/dist/types/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
  166. package/dist/types/src/Engine.d.ts +38 -13
  167. package/dist/types/src/Engine.d.ts.map +1 -1
  168. package/dist/types/src/EngineAdmission.d.ts +70 -0
  169. package/dist/types/src/EngineAdmission.d.ts.map +1 -0
  170. package/dist/types/src/GASP/OverlayGASPRemote.d.ts +4 -3
  171. package/dist/types/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  172. package/dist/types/src/GASP/OverlayGASPStorage.d.ts +22 -16
  173. package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  174. package/dist/types/src/RemoteSecurity.d.ts +50 -0
  175. package/dist/types/src/RemoteSecurity.d.ts.map +1 -0
  176. package/dist/types/src/TopicManager.d.ts +13 -3
  177. package/dist/types/src/TopicManager.d.ts.map +1 -1
  178. package/dist/types/src/storage/AdmissionStorage.d.ts +185 -0
  179. package/dist/types/src/storage/AdmissionStorage.d.ts.map +1 -0
  180. package/dist/types/src/storage/RecoveryContract.d.ts +50 -0
  181. package/dist/types/src/storage/RecoveryContract.d.ts.map +1 -0
  182. package/dist/types/src/storage/Storage.d.ts +32 -19
  183. package/dist/types/src/storage/Storage.d.ts.map +1 -1
  184. package/dist/types/src/storage/knex/KnexStorage.d.ts +8 -8
  185. package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
  186. package/dist/types/src/storage/knex/all-migrations.d.ts.map +1 -1
  187. package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
  188. package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
  189. package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
  190. package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
  191. package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
  192. package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
  193. package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
  194. package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
  195. package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
  196. package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
  197. package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
  198. package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
  199. package/dist/types/src/storage/mongo/MongoReadGuards.d.ts +44 -0
  200. package/dist/types/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
  201. package/dist/types/src/storage/mongo/MongoSchema.d.ts +67 -0
  202. package/dist/types/src/storage/mongo/MongoSchema.d.ts.map +1 -0
  203. package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
  204. package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
  205. package/dist/types/src/storage/mongo.d.ts +9 -0
  206. package/dist/types/src/storage/mongo.d.ts.map +1 -0
  207. package/package.json +14 -6
@@ -0,0 +1,185 @@
1
+ import type { HistoryRevisionHandoff } from './RecoveryContract.js';
2
+ /** Canonical unsigned decimal, 0..2^64-1. Never round through a JS number. */
3
+ export type StorageUint64 = string & {
4
+ readonly __brand: unique symbol;
5
+ };
6
+ export interface StorageScope {
7
+ network: string;
8
+ genesisHash: string;
9
+ nodeId: string;
10
+ }
11
+ /** These revisions are independent: a late admission need not be a reorg. */
12
+ export interface HistoryFence {
13
+ chainEpoch: StorageUint64;
14
+ topicHistoryGeneration: StorageUint64;
15
+ }
16
+ export interface AdmissionIdentity {
17
+ scope: StorageScope;
18
+ /** Derived from verified immutable transaction bytes before storage is called. */
19
+ txid: string;
20
+ mode: 'live' | 'historical';
21
+ /** Digest of off-chain values and any other immutable admission-policy inputs. */
22
+ contextDigest: string;
23
+ topics: Array<{
24
+ topic: string;
25
+ policyId: string;
26
+ }>;
27
+ }
28
+ export interface AdmissionOperationKey {
29
+ scope: StorageScope;
30
+ operationId: string;
31
+ semanticDigest: string;
32
+ }
33
+ /** Small reference to content published outside the database transaction. */
34
+ export interface AdmissionPayloadRef {
35
+ digest: string;
36
+ byteLength: StorageUint64;
37
+ kind: 'raw-transaction' | 'merkle-path' | 'beef-manifest' | 'locking-script' | 'outbox-data';
38
+ }
39
+ export interface AdmissionOutpoint {
40
+ txid: string;
41
+ /** Canonical decimal uint32, the transaction wire outpoint index domain. */
42
+ outputIndex: StorageUint64;
43
+ }
44
+ /** Adapter-issued revision token; absence is also a read predicate. */
45
+ export interface AdmissionReadPredicate {
46
+ key: string;
47
+ expectedVersion: string | null;
48
+ }
49
+ export interface AdmissionOutput extends AdmissionOutpoint {
50
+ satoshis: StorageUint64;
51
+ score: StorageUint64;
52
+ /** A byte range supports even an individually oversized output script. */
53
+ script: {
54
+ payload: AdmissionPayloadRef;
55
+ offset: StorageUint64;
56
+ byteLength: StorageUint64;
57
+ };
58
+ }
59
+ export interface AdmissionTopicDecision {
60
+ topic: string;
61
+ expectedHistory: HistoryFence;
62
+ /** Includes all point/range/projection reads that influenced topic admission. */
63
+ reads: AdmissionReadPredicate[];
64
+ spends: Array<{
65
+ outpoint: AdmissionOutpoint;
66
+ expectedVersion: string;
67
+ spender: string;
68
+ }>;
69
+ /** Remove current serving outputs only; retain applied history and evidence. */
70
+ evictions: AdmissionOutpoint[];
71
+ outputs: AdmissionOutput[];
72
+ edges: Array<{
73
+ source: AdmissionOutpoint;
74
+ consumer: AdmissionOutpoint;
75
+ }>;
76
+ /** Retain this history after output spend, serving moderation or index eviction. */
77
+ applied: {
78
+ txid: string;
79
+ firstSeenHeight?: StorageUint64;
80
+ proof?: AdmissionPayloadRef;
81
+ block?: {
82
+ height: StorageUint64;
83
+ hash: string;
84
+ index: StorageUint64;
85
+ merkleRoot: string;
86
+ };
87
+ };
88
+ /** Invalidate downstream anchors/comparisons; own repair checkpoint moves atomically. */
89
+ historyUpdate?: {
90
+ nextTopicHistoryGeneration: StorageUint64;
91
+ affectedFromHeight: StorageUint64;
92
+ /** Present when a recovery worker itself caused this history revision. */
93
+ handoff?: HistoryRevisionHandoff;
94
+ };
95
+ }
96
+ /** Every event has a stable scope-local ID and ready payload references. */
97
+ export interface AdmissionOutboxIntent {
98
+ eventId: string;
99
+ kind: 'lookup' | 'propagation';
100
+ target: string;
101
+ payloads: AdmissionPayloadRef[];
102
+ }
103
+ export interface AdmissionCommit {
104
+ key: AdmissionOperationKey;
105
+ identity: AdmissionIdentity;
106
+ /** Shared raw/proof components or a manifest; never per-output inline BEEF. */
107
+ payloads: AdmissionPayloadRef[];
108
+ decisions: AdmissionTopicDecision[];
109
+ outbox: AdmissionOutboxIntent[];
110
+ /** Exact UTF-8 STEAK JSON saved with the commit, then replayed without regeneration. */
111
+ steak: string;
112
+ }
113
+ export interface AdmissionReceipt {
114
+ operationId: string;
115
+ semanticDigest: string;
116
+ /** Only the selected adapter can establish this guarantee. */
117
+ durability: 'atomic-local';
118
+ steak: string;
119
+ /** Only enlisted indexes may be visible at commit. External indexes remain pending. */
120
+ indexes: Array<{
121
+ target: string;
122
+ state: 'visible' | 'pending';
123
+ }>;
124
+ propagation: 'not-requested' | 'pending';
125
+ }
126
+ /** Pending is not an ACK. Unknown commit must retain its opaque attempt identity. */
127
+ export type AdmissionCommitResult = {
128
+ state: 'committed';
129
+ receipt: AdmissionReceipt;
130
+ } | {
131
+ state: 'pending';
132
+ attemptId: string;
133
+ } | {
134
+ state: 'rejected';
135
+ code: 'digest-mismatch' | 'read-conflict' | 'spend-conflict' | 'payload-not-ready' | 'unsupported-projection' | 'invalid-plan';
136
+ };
137
+ export type AdmissionReconcileResult = AdmissionCommitResult | {
138
+ state: 'aborted';
139
+ };
140
+ /**
141
+ * Optional v1 contract, separate from legacy CRUD Storage. No current adapter or
142
+ * Engine call path implements it. A provider must atomically revalidate reads,
143
+ * fences, conditional spends and ready-payload pins, and save every effect plus
144
+ * the receipt. Matching retries return the saved receipt before checking stale
145
+ * reads; conflicting semantic digests reject. Do not run verification, uploads,
146
+ * network requests or arbitrary plug-ins inside commitAdmission.
147
+ *
148
+ * TransientTransactionError permits a fresh whole-body attempt after abort and
149
+ * reread/redecision. UnknownTransactionCommitResult requires reconcileAdmission
150
+ * on the SAME attempt until committed or definitively aborted; absence of an
151
+ * operation record alone does not establish abort. Repeated commitAdmission
152
+ * must first recover any persisted unresolved attempt for this operation, even
153
+ * after a lost response or process restart, before it can start a fresh body.
154
+ * Transport failures remain
155
+ * errors, never rejection/abort or a successful local ACK.
156
+ */
157
+ export interface AdmissionStorage {
158
+ readonly protocol: 'overlay-admission-v1';
159
+ commitAdmission: (plan: AdmissionCommit) => Promise<AdmissionCommitResult>;
160
+ reconcileAdmission: (key: AdmissionOperationKey, attemptId?: string) => Promise<AdmissionReconcileResult>;
161
+ }
162
+ /** External projection delivery may be retried only with both capabilities. */
163
+ export interface ReplaySafeProjection {
164
+ readonly protocol: 'overlay-projection-v1';
165
+ applyEvent: (scope: StorageScope, intent: AdmissionOutboxIntent) => Promise<{
166
+ checkpoint: string;
167
+ }>;
168
+ reconcile: (scope: StorageScope, checkpoint: string | null) => Promise<{
169
+ checkpoint: string;
170
+ }>;
171
+ }
172
+ /** Shape detection is a declaration, not proof that an adapter is durable. */
173
+ export declare function getAdmissionStorage(storage: unknown): AdmissionStorage | undefined;
174
+ export declare function isReplaySafeProjection(projection: unknown): projection is ReplaySafeProjection;
175
+ export declare function parseStorageUint64(value: string): bigint;
176
+ export declare function asStorageUint64(value: string): StorageUint64;
177
+ /** Validate the wire outpoint domain before conversion to an exact STEAK number. */
178
+ export declare function parseStorageOutputIndex(value: string): number;
179
+ /**
180
+ * SHA-256 of UTF-8 length-framed fields, see specs/overlay/persistence-v1.md.
181
+ * Mutable reads/decisions and proof variants are deliberately outside semantic
182
+ * identity. Their validation and atomic read predicates remain mandatory.
183
+ */
184
+ export declare function admissionSemanticDigest(identity: AdmissionIdentity): string;
185
+ //# sourceMappingURL=AdmissionStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdmissionStorage.d.ts","sourceRoot":"","sources":["../../../../src/storage/AdmissionStorage.ts"],"names":[],"mappings":"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"}
@@ -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