@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
@@ -9,7 +9,12 @@ import { SyncConfiguration } from './SyncConfiguration.js';
9
9
  import { type AdmittedListResponse, type BASMPeerSyncReport, type CompoundMerklePathResponse, type RawTransactionResponse, type ReorgReport, type TopicAnchorHeaderResolver, type TopicAnchorRangeResponse, type TopicAnchorTip } from './BASM.js';
10
10
  type UTXOHistoryHydrationContext = {
11
11
  outputCache: Map<string, Promise<Output | null>>;
12
+ budgetedOutputs: Set<string>;
13
+ hydratedNodes: number;
14
+ relationCount: number;
15
+ totalBeefBytes: number;
12
16
  };
17
+ type SubmissionMode = 'historical-tx' | 'current-tx' | 'historical-tx-no-spv';
13
18
  /**
14
19
  * An engine for running BSV Overlay Services (topic managers and lookup services).
15
20
  */
@@ -38,6 +43,8 @@ export declare class Engine {
38
43
  basmSyncEnabled: boolean;
39
44
  unprovenEvictionBlocks: number;
40
45
  maxLookupResults: number;
46
+ private submissionTail;
47
+ private basmFetchImpl?;
41
48
  /**
42
49
  * Creates a new Overlay Services Engine
43
50
  * @param {[key: string]: TopicManager} managers - manages topic admittance
@@ -108,6 +115,7 @@ export declare class Engine {
108
115
  rebuildFromHeight: number;
109
116
  newTipHeight: number;
110
117
  }): Promise<ReorgReport>;
118
+ private reconcileReorg;
111
119
  /**
112
120
  * Revalidation sweep: the reorg fallback for chain trackers without a reorg
113
121
  * event stream, and the catch-up step on every reorg-SSE (re)connect (the
@@ -122,6 +130,7 @@ export declare class Engine {
122
130
  private validateTopicSubmission;
123
131
  private isTopicSubmissionAccepted;
124
132
  private broadcastAcceptedSubmission;
133
+ private abortProvisionalAdmissions;
125
134
  private notifyOutputSpent;
126
135
  private markPreviousOutputSpent;
127
136
  private markPreviousOutputsSpent;
@@ -133,6 +142,10 @@ export declare class Engine {
133
142
  private applyTopicStorageMutation;
134
143
  private applyStorageMutations;
135
144
  private propagateSubmission;
145
+ private assertSupportedTopics;
146
+ private shouldSkipPropagation;
147
+ private notifySteakReady;
148
+ private acknowledgeOverlayAdmission;
136
149
  /**
137
150
  * Submits a transaction for processing by Overlay Services.
138
151
  * @param {TaggedBEEF} taggedBEEF - The transaction to process
@@ -140,11 +153,13 @@ export declare class Engine {
140
153
  * @param {string} mode — Indicates the submission behavior, whether historical or current. Historical transactions are not broadcast or propagated.
141
154
  * @param {number[]} offChainValues — Values necessary to evaluate topical admittance that are not stored on-chain.
142
155
  *
143
- * The optional callback function should be used to get STEAK when ready, and avoid waiting for broadcast and transaction propagation to complete.
156
+ * The optional callback is invoked after any required transaction broadcast and
157
+ * local storage mutations have completed, but before peer-to-peer propagation.
144
158
  *
145
159
  * @returns {Promise<STEAK>} The submitted transaction execution acknowledgement
146
160
  */
147
- submit(taggedBEEF: TaggedBEEF, onSteakReady?: (steak: STEAK) => void, mode?: 'historical-tx' | 'current-tx' | 'historical-tx-no-spv', offChainValues?: number[]): Promise<STEAK>;
161
+ submit(taggedBEEF: TaggedBEEF, onSteakReady?: (steak: STEAK) => void, mode?: SubmissionMode, offChainValues?: number[]): Promise<STEAK>;
162
+ private submitUnlocked;
148
163
  /**
149
164
  * Submit a lookup question to the Overlay Services Engine, and receive back a Lookup Answer
150
165
  * @param LookupQuestion — The question to ask the Overlay Services Engine
@@ -153,6 +168,8 @@ export declare class Engine {
153
168
  lookup(lookupQuestion: LookupQuestion): Promise<LookupAnswer>;
154
169
  private createUTXOHistoryHydrationContext;
155
170
  private toOutputCacheKey;
171
+ private assertLookupFormula;
172
+ private validateLookupOutput;
156
173
  private preloadOutputsWithBEEF;
157
174
  private loadOutputWithBEEF;
158
175
  private hydrateUTXOHistoryNode;
@@ -175,6 +192,7 @@ export declare class Engine {
175
192
  * @throws Will throw an error if there are issues during the advertisement synchronization process.
176
193
  * @returns {Promise<void>} A promise that resolves when the synchronization process is complete.
177
194
  */
195
+ private validateCurrentAdvertisements;
178
196
  syncAdvertisements(): Promise<void>;
179
197
  /**
180
198
  * This method goes through each topic that we support syncing and attempts to sync with each endpoint
@@ -186,13 +204,23 @@ export declare class Engine {
186
204
  startGASPSync(): Promise<void>;
187
205
  private syncGASPWithPeer;
188
206
  private resolveSyncEndpointsForTopic;
207
+ private assertSupportedBASMTopic;
208
+ private assertTopicAnchorTip;
209
+ private assertTopicBlockAnchor;
189
210
  provideTopicAnchorTip(topic: string): Promise<TopicAnchorTip>;
190
211
  provideTopicAnchorRange(topic: string, fromHeight: number, toHeight: number): Promise<TopicAnchorRangeResponse>;
191
212
  provideAdmittedList(topic: string, blockHeight: number, blockHash?: string): Promise<AdmittedListResponse>;
192
213
  provideCompoundMerklePath(topic: string, blockHeight: number, txids: string[]): Promise<CompoundMerklePathResponse>;
193
- provideRawTransactions(txids: string[]): Promise<RawTransactionResponse>;
214
+ provideRawTransactions(txids: string[], topic?: string): Promise<RawTransactionResponse>;
194
215
  startBASMSync(): Promise<BASMPeerSyncReport[]>;
195
216
  private reconcileBASMWithPeer;
217
+ private requireMatchingRemoteBASMTip;
218
+ private finishBASMWhenRemoteIsNotAhead;
219
+ private requireBASMRangePrefix;
220
+ private advanceBASMWithRemoteAnchors;
221
+ private markBASMPeerSyncError;
222
+ private requireCanonicalBASMAnchor;
223
+ private validateBASMProofPositions;
196
224
  private reconcileRemoteAnchor;
197
225
  private fetchBASMMissingTransactions;
198
226
  evictUnprovenTransactions(options?: {
@@ -222,6 +250,7 @@ export declare class Engine {
222
250
  error: string;
223
251
  }>;
224
252
  }>;
253
+ private validateUnprovenCandidates;
225
254
  maintainUnprovenTransactions(options: {
226
255
  topic?: string;
227
256
  thresholdBlocks?: number;
@@ -278,7 +307,7 @@ export declare class Engine {
278
307
  * @returns A promise that resolves to a GASPNode containing the raw transaction and other optional data.
279
308
  * @throws An error if no output is found for the given transaction ID and output index.
280
309
  */
281
- provideForeignGASPNode(graphID: string, txid: string, outputIndex: number): Promise<GASPNode>;
310
+ provideForeignGASPNode(graphID: string, txid: string, outputIndex: number, topic?: string): Promise<GASPNode>;
282
311
  /**
283
312
  * Traverse and return the history of a UTXO.
284
313
  *
@@ -293,7 +322,7 @@ export declare class Engine {
293
322
  * @param {number} [currentDepth=0] - The current depth of the traversal relative to the top-level UTXO.
294
323
  *
295
324
  * @returns {Promise<Output | undefined>} - A promise that resolves to the output history if found, or undefined if not.
296
- */
325
+ */
297
326
  getUTXOHistory(output: Output, historySelector?: ((beef: number[], outputIndex: number, currentDepth: number) => Promise<boolean>) | number, currentDepth?: number, context?: UTXOHistoryHydrationContext): Promise<Output | undefined>;
298
327
  /**
299
328
  * Delete a UTXO and all stale consumed inputs.
@@ -301,6 +330,8 @@ export declare class Engine {
301
330
  * @returns {Promise<void>} - A promise that resolves when the deletion process is complete.
302
331
  */
303
332
  private deleteUTXODeep;
333
+ private assertStoredOutputRelations;
334
+ private assertStoredOutputMatches;
304
335
  /**
305
336
  * Given a new transaction proof (txid, proof),
306
337
  * update tx.merklePath if appropriate,
@@ -311,14 +342,8 @@ export declare class Engine {
311
342
  * @param proof for txid
312
343
  */
313
344
  private updateInputProofs;
314
- /**
315
- * Recursively updates beefs (merkle proofs) of this output and its consumedBy lineage.
316
- *
317
- * @param output - An output derived from txid which may benefit from new proof.
318
- * @param txid - The txid for which proof is a valid merkle path.
319
- * @param proof - The merklePath proving txid is a mined transaction hash
320
- */
321
- private updateMerkleProof;
345
+ private prepareMerkleProofUpdate;
346
+ private collectMerkleProofOutputs;
322
347
  /**
323
348
  * Recursively prune UTXOs when an incoming Merkle Proof is received.
324
349
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/Engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/Engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import type { Transaction } from '@bsv/sdk';
2
+ import { type AdmissionCommit, type AdmissionCommitResult, type AdmissionPayloadRef, type AdmissionStorage, type HistoryFence, type StorageScope } from './storage/AdmissionStorage.js';
3
+ import type { Output } from './Output.js';
4
+ import type { LookupService } from './LookupService.js';
5
+ export declare const OVERLAY_ENGINE_POLICY_ID = "overlay-engine-submit-v1";
6
+ export type OverlayAdmissionMode = 'live' | 'historical';
7
+ type TopicValidationLike = {
8
+ topic: string;
9
+ isDupe: boolean;
10
+ previousCoins: number[];
11
+ previousOutputs: Array<Output | null>;
12
+ admissibleOutputs: {
13
+ outputsToAdmit: number[];
14
+ coinsToRetain: number[];
15
+ coinsRemoved?: number[];
16
+ };
17
+ };
18
+ export interface OverlayAdmissionHost {
19
+ admission: AdmissionStorage;
20
+ admissionScope: StorageScope;
21
+ publishAdmissionPayload?: (input: {
22
+ kind: AdmissionPayloadRef['kind'];
23
+ bytes: Uint8Array;
24
+ txid?: string;
25
+ }) => Promise<AdmissionPayloadRef>;
26
+ enlistedIndexTargets?: () => readonly string[];
27
+ getHistoryFence?: (topic: string) => Promise<HistoryFence>;
28
+ }
29
+ export declare function getOverlayAdmissionHost(storage: unknown): OverlayAdmissionHost | undefined;
30
+ export declare function overlayAdmissionContextDigest(offChainValues?: number[]): string;
31
+ export declare function overlayAdmissionOperationId(_mode: OverlayAdmissionMode, txid: string, topics: string[]): string;
32
+ export declare function overlayAdmissionMode(mode: 'historical-tx' | 'current-tx' | 'historical-tx-no-spv'): OverlayAdmissionMode;
33
+ /**
34
+ * Selects the topics that require a new admission decision: topics that did
35
+ * not fail validation, are not already-applied dupes, and actually admit or
36
+ * retain something (or consume a previously-admitted coin). Already-applied
37
+ * (dupe) topics are excluded so that a retry — including a historical GASP
38
+ * replay after a live admit, or a multi-topic resubmit where only some
39
+ * topics were previously applied — never re-submits an admission decision
40
+ * for a topic that MongoAdmissionStorage.assertAppliedAvailable would reject
41
+ * as belonging to a different operation.
42
+ */
43
+ export declare function selectNewAdmissionTopics<T extends TopicValidationLike>(validations: readonly T[], failedTopics: Set<string>): T[];
44
+ export declare function buildOverlayAdmissionPlan(input: {
45
+ host: OverlayAdmissionHost;
46
+ tx: Transaction;
47
+ txid: string;
48
+ beef: number[];
49
+ topics: string[];
50
+ mode: OverlayAdmissionMode;
51
+ offChainValues?: number[];
52
+ validations: TopicValidationLike[];
53
+ failedTopics: Set<string>;
54
+ lookupServices: {
55
+ [key: string]: LookupService;
56
+ };
57
+ includePropagation: boolean;
58
+ applied?: {
59
+ firstSeenHeight?: number;
60
+ blockHeight?: number;
61
+ blockHash?: string;
62
+ blockIndex?: number;
63
+ merkleRoot?: string;
64
+ };
65
+ }): Promise<AdmissionCommit>;
66
+ export declare function waitForAdmissionReceipt(admission: AdmissionStorage, plan: AdmissionCommit, rebuild: () => Promise<AdmissionCommit>): Promise<AdmissionCommitResult & {
67
+ state: 'committed';
68
+ }>;
69
+ export {};
70
+ //# sourceMappingURL=EngineAdmission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EngineAdmission.d.ts","sourceRoot":"","sources":["../../../src/EngineAdmission.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { GASPInitialReply, GASPInitialRequest, GASPInitialResponse, GASPNode, GASPNodeResponse, GASPRemote } from '@bsv/gasp';
2
2
  export declare class OverlayGASPRemote implements GASPRemote {
3
- endpointURL: string;
4
- topic: string;
5
- constructor(endpointURL: string, topic: string);
3
+ readonly endpointURL: string;
4
+ readonly topic: string;
5
+ private readonly fetchImpl;
6
+ constructor(endpointURL: string, topic: string, fetchImpl?: typeof fetch);
6
7
  /**
7
8
  * Given an outgoing initial request, sends the request to the foreign instance and obtains their initial response.
8
9
  * @param request
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayGASPRemote.d.ts","sourceRoot":"","sources":["../../../../src/GASP/OverlayGASPRemote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE7H,qBAAa,iBAAkB,YAAW,UAAU;IAC9B,WAAW,EAAE,MAAM;IAAS,KAAK,EAAE,MAAM;IAA7D,YAAoB,WAAW,EAAE,MAAM,EAAS,KAAK,EAAE,MAAM,EAAK;IAElE;;;;OAIG;IACG,kBAAkB,CAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiCnF;IAED;;;;;;;OAOG;IACG,WAAW,CAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAwC3G;IAKK,eAAe,CAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEhF;IAIK,UAAU,CAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAExE;CACF"}
1
+ {"version":3,"file":"OverlayGASPRemote.d.ts","sourceRoot":"","sources":["../../../../src/GASP/OverlayGASPRemote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAe7H,qBAAa,iBAAkB,YAAW,UAAU;IAClD,SAAgB,WAAW,EAAE,MAAM,CAAA;IACnC,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IAExC,YAAa,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,KAAK,EAMxE;IAED;;;;OAIG;IACG,kBAAkB,CAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmBnF;IAED;;;;;;;OAOG;IACG,WAAW,CAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyB3G;IAKK,eAAe,CAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEhF;IAIK,UAAU,CAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAExE;CACF"}
@@ -22,14 +22,20 @@ export declare class OverlayGASPStorage implements GASPStorage {
22
22
  topic: string;
23
23
  engine: Engine;
24
24
  maxNodesInGraph?: number | undefined;
25
+ maxBytesInGraph: number;
25
26
  readonly temporaryGraphNodeRefs: Record<string, GraphNode>;
27
+ private readonly graphNodeCounts;
28
+ private readonly graphByteCounts;
26
29
  private static activeAnchorValidations;
27
30
  private static readonly anchorValidationQueue;
28
31
  private static activeFinalizations;
29
32
  private static readonly finalizationQueue;
30
33
  private static readonly MAX_CONCURRENT_ANCHOR_VALIDATIONS;
31
34
  private static readonly MAX_CONCURRENT_FINALIZATIONS;
32
- constructor(topic: string, engine: Engine, maxNodesInGraph?: number | undefined);
35
+ constructor(topic: string, engine: Engine, maxNodesInGraph?: number | undefined, maxBytesInGraph?: number);
36
+ private graphNodeKey;
37
+ private graphNode;
38
+ private nodeByteLength;
33
39
  private static acquireAnchorValidationSlot;
34
40
  private static releaseAnchorValidationSlot;
35
41
  private static acquireFinalizationSlot;
@@ -50,10 +56,10 @@ export declare class OverlayGASPStorage implements GASPStorage {
50
56
  */
51
57
  hydrateGASPNode(graphID: string, txid: string, outputIndex: number, _metadata: boolean): Promise<GASPNode>;
52
58
  /**
53
- * For a given node, returns the inputs needed to complete the graph, including whether updated metadata is requested for those inputs.
54
- * @param tx The node for which needed inputs should be found.
55
- * @returns A promise for a mapping of requested input transactions and whether metadata should be provided for each.
56
- */
59
+ * For a given node, returns the inputs needed to complete the graph, including whether updated metadata is requested for those inputs.
60
+ * @param tx The node for which needed inputs should be found.
61
+ * @returns A promise for a mapping of requested input transactions and whether metadata should be provided for each.
62
+ */
57
63
  findNeededInputs(tx: GASPNode): Promise<GASPNodeResponse | undefined>;
58
64
  /**
59
65
  * Ensures that no inputs are requested from foreign nodes before sending any GASP response
@@ -61,21 +67,21 @@ export declare class OverlayGASPStorage implements GASPStorage {
61
67
  */
62
68
  private stripAlreadyKnownInputs;
63
69
  /**
64
- * Appends a new node to a temporary graph.
65
- * @param tx The node to append to this graph.
66
- * @param spentBy Unless this is the same node identified by the graph ID, denotes the TXID and input index for the node which spent this one, in 36-byte format.
67
- * @throws If the node cannot be appended to the graph, either because the graph ID is for a graph the recipient does not want or because the graph has grown to be too large before being finalized.
68
- */
70
+ * Appends a new node to a temporary graph.
71
+ * @param tx The node to append to this graph.
72
+ * @param spentBy Unless this is the same node identified by the graph ID, denotes the TXID and input index for the node which spent this one, in 36-byte format.
73
+ * @throws If the node cannot be appended to the graph, either because the graph ID is for a graph the recipient does not want or because the graph has grown to be too large before being finalized.
74
+ */
69
75
  appendToGraph(tx: GASPNode, spentBy?: string | undefined): Promise<void>;
70
76
  private previousCoinIndexes;
71
77
  private admitHistoricalBEEF;
72
78
  /**
73
- * Checks whether the given graph, in its current state, makes reference only to transactions that are proven in the blockchain, or already known by the recipient to be valid.
74
- * Additionally, in a breadth-first manner (ensuring that all inputs for any given node are processed before nodes that spend them), it ensures that the root node remains valid according to the rules of the overlay's topic manager,
75
- * while considering any coins which the Manager had previously indicated were either valid or invalid.
76
- * @param graphID The TXID and output index (in 36-byte format) for the UTXO at the tip of this graph.
77
- * @throws If the graph is not well-anchored, according to the rules of Bitcoin or the rules of the Overlay Topic Manager.
78
- */
79
+ * Checks whether the given graph, in its current state, makes reference only to transactions that are proven in the blockchain, or already known by the recipient to be valid.
80
+ * Additionally, in a breadth-first manner (ensuring that all inputs for any given node are processed before nodes that spend them), it ensures that the root node remains valid according to the rules of the overlay's topic manager,
81
+ * while considering any coins which the Manager had previously indicated were either valid or invalid.
82
+ * @param graphID The TXID and output index (in 36-byte format) for the UTXO at the tip of this graph.
83
+ * @throws If the graph is not well-anchored, according to the rules of Bitcoin or the rules of the Overlay Topic Manager.
84
+ */
79
85
  validateGraphAnchor(graphID: string): Promise<void>;
80
86
  /**
81
87
  * Deletes all data associated with a temporary graph that has failed to sync, if the graph exists.
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayGASPStorage.d.ts","sourceRoot":"","sources":["../../../../src/GASP/OverlayGASPStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACzC,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB;AAED,qBAAa,kBAAmB,YAAW,WAAW;IAShC,KAAK,EAAE,MAAM;IAAS,MAAM,EAAE,MAAM;IAAS,eAAe,CAAC,EAAE,MAAM;IARzF,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAK;IAC/D,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAI;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;IACrE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAI;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAwB;IACjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAAI;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAI;IAExD,YAAoB,KAAK,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,EAAS,eAAe,CAAC,EAAE,MAAM,YAAA,EAAK;mBAEzE,2BAA2B;IAOhD,OAAO,CAAC,MAAM,CAAC,2BAA2B;mBAQrB,uBAAuB;IAO5C,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAQtC;;;;OAIG;IACG,cAAc,CAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAO1D;IAED;;;;;;;OAOG;IACG,eAAe,CAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoBhH;IAED;;;;MAIE;IACI,gBAAgB,CAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CA2C3E;IAED;;;OAGG;YACW,uBAAuB;IAkBrC;;;;;MAKE;IACI,aAAa,CAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC9E;IAED,OAAO,CAAC,mBAAmB;YAYb,mBAAmB;IAajC;;;;;;QAMI;IACE,mBAAmB,CAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCzD;IAED;;;OAGG;IACG,YAAY,CAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlD;IAED;;;OAGG;IACG,aAAa,CAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBnD;IAED;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAuBnC;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAsBvB"}
1
+ {"version":3,"file":"OverlayGASPStorage.d.ts","sourceRoot":"","sources":["../../../../src/GASP/OverlayGASPStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { Transaction, type AdmittanceInstructions } from '@bsv/sdk';
2
+ export declare const MAX_GASP_PAGE_SIZE = 10000;
3
+ export declare const MAX_BASM_TXIDS = 256;
4
+ export declare const MAX_REMOTE_JSON_BYTES: number;
5
+ export declare const MAX_GASP_NODE_JSON_BYTES: number;
6
+ export declare const MAX_RAW_TRANSACTION_BYTES: number;
7
+ export declare const REMOTE_BODY_TIMEOUT_MS = 30000;
8
+ export declare function validateAdmittanceInstructions(value: unknown, tx: Transaction, previousCoins: number[]): AdmittanceInstructions;
9
+ export declare function assertTopic(topic: unknown, label?: string): asserts topic is string;
10
+ export declare function assertRegistryName(value: unknown, label: string): asserts value is string;
11
+ export declare function assertHash(value: unknown, label: string): asserts value is string;
12
+ export declare function assertOutputIndex(value: unknown, label: string): asserts value is number;
13
+ export declare function assertNonnegativeInteger(value: unknown, label: string): asserts value is number;
14
+ export declare function assertOutpoint(value: unknown, label: string): asserts value is string;
15
+ export declare function assertHexBytes(value: unknown, label: string, maxBytes: number, allowEmpty?: boolean): asserts value is string;
16
+ export declare function assertTxidList(value: unknown, label: string, options?: {
17
+ allowEmpty?: boolean;
18
+ max?: number;
19
+ }): asserts value is string[];
20
+ export declare function normalizePeerEndpoint(endpoint: string): string;
21
+ export declare function securePeerFetch(endpoint: string, supplied?: typeof fetch): {
22
+ endpoint: string;
23
+ fetchImpl: typeof fetch;
24
+ };
25
+ export declare function readPeerJSON(response: Response, maxBytes?: number): Promise<unknown>;
26
+ export declare function assertGASPInitialResponse(value: unknown, maxOutputs: number): asserts value is {
27
+ UTXOList: Array<{
28
+ txid: string;
29
+ outputIndex: number;
30
+ score: number;
31
+ }>;
32
+ since: number;
33
+ };
34
+ export declare function assertGASPNode(value: unknown, expected: {
35
+ graphID: string;
36
+ txid: string;
37
+ outputIndex: number;
38
+ }): asserts value is {
39
+ graphID: string;
40
+ rawTx: string;
41
+ outputIndex: number;
42
+ proof?: string;
43
+ txMetadata?: string;
44
+ outputMetadata?: string;
45
+ inputs?: Record<string, {
46
+ hash: string;
47
+ }>;
48
+ };
49
+ export declare function assertRawTransactionMatches(txid: string, rawTx: string): void;
50
+ //# sourceMappingURL=RemoteSecurity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteSecurity.d.ts","sourceRoot":"","sources":["../../../src/RemoteSecurity.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import { AdmittanceInstructions } from '@bsv/sdk';
2
+ export interface TopicAdmittanceContext {
3
+ /** Validate protocol shape without creating provisional external state. */
4
+ dryRun?: boolean;
5
+ }
2
6
  /**
3
7
  * Defines a Topic Manager interface that can be implemented for specific use-cases
4
8
  */
@@ -8,7 +12,13 @@ export interface TopicManager {
8
12
  * Accepts the transaction in BEEF format and an array of those input indices which spend previously-admitted outputs from the same topic.
9
13
  * The transaction's BEEF structure will always contain the transactions associated with previous coins for reference (if any), regardless of whether the current transaction was directly proven.
10
14
  */
11
- identifyAdmissibleOutputs: (beef: number[], previousCoins: number[], offChainValues?: number[], mode?: 'historical-tx' | 'current-tx' | 'historical-tx-no-spv') => Promise<AdmittanceInstructions>;
15
+ identifyAdmissibleOutputs: (beef: number[], previousCoins: number[], offChainValues?: number[], mode?: 'historical-tx' | 'current-tx' | 'historical-tx-no-spv', context?: TopicAdmittanceContext) => Promise<AdmittanceInstructions>;
16
+ /**
17
+ * Releases provisional state created while identifying admissible outputs
18
+ * when a current transaction cannot be broadcast. Implementations that keep
19
+ * validation read-only do not need this hook.
20
+ */
21
+ abortAdmissibleOutputs?: (beef: number[], outputsToAbort: number[]) => Promise<void> | void;
12
22
  /**
13
23
  * Identifies and returns the inputs needed to anchor any topical outputs from this transaction to their associated previous history.
14
24
  * @throws - if there are no potentially valid topical outputs in this transaction
@@ -18,8 +28,8 @@ export interface TopicManager {
18
28
  outputIndex: number;
19
29
  }>>;
20
30
  /**
21
- * Returns a Markdown-formatted documentation string for the topic manager.
22
- */
31
+ * Returns a Markdown-formatted documentation string for the topic manager.
32
+ */
23
33
  getDocumentation: () => Promise<string>;
24
34
  /**
25
35
  * Returns a metadata object that can be used to identify the topic manager.
@@ -1 +1 @@
1
- {"version":3,"file":"TopicManager.d.ts","sourceRoot":"","sources":["../../../src/TopicManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,yBAAyB,EAAE,CACzB,IAAI,EAAE,MAAM,EAAE,EACd,aAAa,EAAE,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,IAAI,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,sBAAsB,KAC3D,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAEpC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAE3H;;MAEE;IACF,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvC;;OAEG;IACH,WAAW,EAAE,MAAM,OAAO,CAAC;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,gBAAgB,EAAE,MAAM,CAAA;QACxB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,CAAC,CAAA;CACH"}
1
+ {"version":3,"file":"TopicManager.d.ts","sourceRoot":"","sources":["../../../src/TopicManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEjD,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,yBAAyB,EAAE,CACzB,IAAI,EAAE,MAAM,EAAE,EACd,aAAa,EAAE,MAAM,EAAE,EACvB,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,IAAI,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,sBAAsB,EAC9D,OAAO,CAAC,EAAE,sBAAsB,KAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAEpC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAE3F;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CACrB,IAAI,EAAE,MAAM,EAAE,EACd,cAAc,CAAC,EAAE,MAAM,EAAE,KACtB,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAE1D;;OAEG;IACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvC;;OAEG;IACH,WAAW,EAAE,MAAM,OAAO,CAAC;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,gBAAgB,EAAE,MAAM,CAAA;QACxB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,CAAC,CAAA;CACH"}