@bsv/overlay 0.4.0 → 0.4.2

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 (90) hide show
  1. package/dist/cjs/package.json +5 -4
  2. package/dist/cjs/src/Engine.js +18 -8
  3. package/dist/cjs/src/Engine.js.map +1 -1
  4. package/dist/cjs/src/GASP/OverlayGASPRemote.js +8 -4
  5. package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
  6. package/dist/cjs/src/GASP/OverlayGASPStorage.js +25 -20
  7. package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
  8. package/dist/cjs/src/storage/knex/KnexStorage.js +32 -7
  9. package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
  10. package/dist/cjs/src/storage/knex/migrations/2025-06-25-001-gasp-pagination-support.js +43 -0
  11. package/dist/cjs/src/storage/knex/migrations/2025-06-25-001-gasp-pagination-support.js.map +1 -0
  12. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  13. package/dist/esm/src/Engine.js +17 -10
  14. package/dist/esm/src/Engine.js.map +1 -1
  15. package/dist/esm/src/GASP/OverlayGASPRemote.js +2 -1
  16. package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
  17. package/dist/esm/src/GASP/OverlayGASPStorage.js +15 -14
  18. package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
  19. package/dist/esm/src/storage/knex/KnexStorage.js +32 -7
  20. package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
  21. package/dist/esm/src/storage/knex/migrations/2025-06-25-001-gasp-pagination-support.js +39 -0
  22. package/dist/esm/src/storage/knex/migrations/2025-06-25-001-gasp-pagination-support.js.map +1 -0
  23. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  24. package/dist/types/src/Engine.d.ts.map +1 -1
  25. package/dist/types/src/GASP/OverlayGASPRemote.d.ts +1 -1
  26. package/dist/types/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  27. package/dist/types/src/GASP/OverlayGASPStorage.d.ts +2 -5
  28. package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  29. package/dist/types/src/Output.d.ts +1 -0
  30. package/dist/types/src/Output.d.ts.map +1 -1
  31. package/dist/types/src/storage/Storage.d.ts +17 -2
  32. package/dist/types/src/storage/Storage.d.ts.map +1 -1
  33. package/dist/types/src/storage/knex/KnexStorage.d.ts +3 -1
  34. package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
  35. package/dist/types/src/storage/knex/migrations/2025-06-25-001-gasp-pagination-support.d.ts +4 -0
  36. package/dist/types/src/storage/knex/migrations/2025-06-25-001-gasp-pagination-support.d.ts.map +1 -0
  37. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  38. package/package.json +5 -4
  39. package/src/Engine.ts +20 -11
  40. package/src/GASP/OverlayGASPRemote.ts +3 -2
  41. package/src/GASP/OverlayGASPStorage.ts +17 -16
  42. package/src/Output.ts +1 -0
  43. package/src/__tests/Engine.test.ts +65 -63
  44. package/src/__tests/OverlayGASPRemote.test.ts +1 -1
  45. package/src/__tests/OverlayGASPStorage.test.ts +21 -17
  46. package/src/storage/Storage.ts +19 -2
  47. package/src/storage/knex/KnexStorage.ts +37 -7
  48. package/src/storage/knex/migrations/2025-06-25-001-gasp-pagination-support.ts +46 -0
  49. package/dist/cjs/src/AdmittanceInstructions.js +0 -3
  50. package/dist/cjs/src/AdmittanceInstructions.js.map +0 -1
  51. package/dist/cjs/src/LookupAnswer.js +0 -3
  52. package/dist/cjs/src/LookupAnswer.js.map +0 -1
  53. package/dist/cjs/src/LookupQuestion.js +0 -3
  54. package/dist/cjs/src/LookupQuestion.js.map +0 -1
  55. package/dist/cjs/src/SHIPAdvertisement.js +0 -3
  56. package/dist/cjs/src/SHIPAdvertisement.js.map +0 -1
  57. package/dist/cjs/src/SLAPAdvertisement.js +0 -3
  58. package/dist/cjs/src/SLAPAdvertisement.js.map +0 -1
  59. package/dist/cjs/src/STEAK.js +0 -3
  60. package/dist/cjs/src/STEAK.js.map +0 -1
  61. package/dist/cjs/src/TaggedBEEF.js +0 -3
  62. package/dist/cjs/src/TaggedBEEF.js.map +0 -1
  63. package/dist/esm/src/AdmittanceInstructions.js +0 -2
  64. package/dist/esm/src/AdmittanceInstructions.js.map +0 -1
  65. package/dist/esm/src/LookupAnswer.js +0 -2
  66. package/dist/esm/src/LookupAnswer.js.map +0 -1
  67. package/dist/esm/src/LookupQuestion.js +0 -2
  68. package/dist/esm/src/LookupQuestion.js.map +0 -1
  69. package/dist/esm/src/SHIPAdvertisement.js +0 -2
  70. package/dist/esm/src/SHIPAdvertisement.js.map +0 -1
  71. package/dist/esm/src/SLAPAdvertisement.js +0 -2
  72. package/dist/esm/src/SLAPAdvertisement.js.map +0 -1
  73. package/dist/esm/src/STEAK.js +0 -2
  74. package/dist/esm/src/STEAK.js.map +0 -1
  75. package/dist/esm/src/TaggedBEEF.js +0 -2
  76. package/dist/esm/src/TaggedBEEF.js.map +0 -1
  77. package/dist/types/src/AdmittanceInstructions.d.ts +0 -14
  78. package/dist/types/src/AdmittanceInstructions.d.ts.map +0 -1
  79. package/dist/types/src/LookupAnswer.d.ts +0 -15
  80. package/dist/types/src/LookupAnswer.d.ts.map +0 -1
  81. package/dist/types/src/LookupQuestion.d.ts +0 -15
  82. package/dist/types/src/LookupQuestion.d.ts.map +0 -1
  83. package/dist/types/src/SHIPAdvertisement.d.ts +0 -9
  84. package/dist/types/src/SHIPAdvertisement.d.ts.map +0 -1
  85. package/dist/types/src/SLAPAdvertisement.d.ts +0 -9
  86. package/dist/types/src/SLAPAdvertisement.d.ts.map +0 -1
  87. package/dist/types/src/STEAK.d.ts +0 -10
  88. package/dist/types/src/STEAK.d.ts.map +0 -1
  89. package/dist/types/src/TaggedBEEF.d.ts +0 -11
  90. package/dist/types/src/TaggedBEEF.d.ts.map +0 -1
@@ -34,7 +34,8 @@ export class KnexStorage implements Storage {
34
34
  'outputs.satoshis',
35
35
  'outputs.outputsConsumed',
36
36
  'outputs.spent',
37
- 'outputs.consumedBy'
37
+ 'outputs.consumedBy',
38
+ 'outputs.score'
38
39
  ]
39
40
 
40
41
  if (includeBEEF) {
@@ -72,7 +73,8 @@ export class KnexStorage implements Storage {
72
73
  'outputs.satoshis',
73
74
  'outputs.outputsConsumed',
74
75
  'outputs.spent',
75
- 'outputs.consumedBy'
76
+ 'outputs.consumedBy',
77
+ 'outputs.score'
76
78
  ]
77
79
 
78
80
  if (includeBEEF) {
@@ -97,16 +99,20 @@ export class KnexStorage implements Storage {
97
99
  }))
98
100
  }
99
101
 
100
- async findUTXOsForTopic (topic: string, since?: number, includeBEEF: boolean = false): Promise<Output[]> {
102
+ async findUTXOsForTopic (topic: string, since?: number, limit?: number, includeBEEF: boolean = false): Promise<Output[]> {
101
103
  // Base query to get outputs
102
104
  const query = this.knex('outputs').where({ 'outputs.topic': topic, 'outputs.spent': false })
103
105
 
104
- // If provided, additionally filters UTXOs by block height
106
+ // If provided, additionally filters UTXOs by score
105
107
  if (since !== undefined && since > 0) {
106
108
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
107
- query.andWhere('outputs.blockHeight', '>=', since)
109
+ query.andWhere('outputs.score', '>=', since)
108
110
  }
109
111
 
112
+ // Sort by score
113
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
114
+ query.orderBy('outputs.score', 'asc')
115
+
110
116
  // Select necessary fields from outputs and conditionally include beef from transactions
111
117
  const selectFields = [
112
118
  'outputs.txid',
@@ -116,7 +122,8 @@ export class KnexStorage implements Storage {
116
122
  'outputs.satoshis',
117
123
  'outputs.outputsConsumed',
118
124
  'outputs.spent',
119
- 'outputs.consumedBy'
125
+ 'outputs.consumedBy',
126
+ 'outputs.score'
120
127
  ]
121
128
 
122
129
  if (includeBEEF) {
@@ -125,6 +132,12 @@ export class KnexStorage implements Storage {
125
132
  selectFields.push('transactions.beef')
126
133
  }
127
134
 
135
+ // Apply limit if specified
136
+ if (limit !== undefined && limit > 0) {
137
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
138
+ query.limit(limit)
139
+ }
140
+
128
141
  const outputs = await query.select(selectFields)
129
142
 
130
143
  if (outputs === undefined || outputs.length === 0) {
@@ -165,7 +178,8 @@ export class KnexStorage implements Storage {
165
178
  satoshis: Number(output.satoshis),
166
179
  outputsConsumed: JSON.stringify(output.outputsConsumed),
167
180
  consumedBy: JSON.stringify(output.consumedBy),
168
- spent: output.spent
181
+ spent: output.spent,
182
+ score: output.score
169
183
  })]
170
184
 
171
185
  if (output.beef !== undefined) {
@@ -226,4 +240,20 @@ export class KnexStorage implements Storage {
226
240
 
227
241
  return !!result
228
242
  }
243
+
244
+ async updateLastInteraction (host: string, topic: string, since: number): Promise<void> {
245
+ await this.knex('host_sync_state')
246
+ .insert({ host, topic, since })
247
+ .onConflict(['host', 'topic'])
248
+ .merge({ since })
249
+ }
250
+
251
+ async getLastInteraction (host: string, topic: string): Promise<number> {
252
+ const result = await this.knex('host_sync_state')
253
+ .where({ host, topic })
254
+ .select('since')
255
+ .first()
256
+
257
+ return result ? result.since : 0
258
+ }
229
259
  }
@@ -0,0 +1,46 @@
1
+ import type { Knex } from 'knex'
2
+
3
+ export async function up (knex: Knex): Promise<void> {
4
+ // 1. Add score column to outputs table for pagination/sorting
5
+ const hasScoreColumn = await knex.schema.hasColumn('outputs', 'score')
6
+
7
+ if (!hasScoreColumn) {
8
+ // Add new column for score (can be timestamp or any other sorting factor)
9
+ await knex.schema.table('outputs', table => {
10
+ table.float('score').notNullable().defaultTo(0)
11
+ // Create compound index on topic and score for efficient querying
12
+ table.index(['topic', 'score'])
13
+ })
14
+ }
15
+
16
+ // 2. Create host_sync_state table for tracking sync progress per host/topic
17
+ const hostSyncStateExists = await knex.schema.hasTable('host_sync_state')
18
+
19
+ if (!hostSyncStateExists) {
20
+ await knex.schema.createTable('host_sync_state', table => {
21
+ table.string('host').notNullable()
22
+ table.string('topic').notNullable()
23
+ table.bigInteger('since').unsigned().notNullable()
24
+ table.primary(['host', 'topic'])
25
+ table.index('host')
26
+ table.index('topic')
27
+ })
28
+ }
29
+ }
30
+
31
+ export async function down (knex: Knex): Promise<void> {
32
+ // Rollback in reverse order
33
+
34
+ // 1. Drop host_sync_state table
35
+ await knex.schema.dropTableIfExists('host_sync_state')
36
+
37
+ // 2. Remove score column from outputs table
38
+ const hasScoreColumn = await knex.schema.hasColumn('outputs', 'score')
39
+ if (hasScoreColumn) {
40
+ await knex.schema.table('outputs', table => {
41
+ // Drop the compound index on topic and score
42
+ table.dropIndex(['topic', 'score'])
43
+ table.dropColumn('score')
44
+ })
45
+ }
46
+ }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=AdmittanceInstructions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdmittanceInstructions.js","sourceRoot":"","sources":["../../../src/AdmittanceInstructions.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LookupAnswer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LookupAnswer.js","sourceRoot":"","sources":["../../../src/LookupAnswer.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=LookupQuestion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LookupQuestion.js","sourceRoot":"","sources":["../../../src/LookupQuestion.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=SHIPAdvertisement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SHIPAdvertisement.js","sourceRoot":"","sources":["../../../src/SHIPAdvertisement.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=SLAPAdvertisement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SLAPAdvertisement.js","sourceRoot":"","sources":["../../../src/SLAPAdvertisement.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=STEAK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"STEAK.js","sourceRoot":"","sources":["../../../src/STEAK.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=TaggedBEEF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaggedBEEF.js","sourceRoot":"","sources":["../../../src/TaggedBEEF.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=AdmittanceInstructions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdmittanceInstructions.js","sourceRoot":"","sources":["../../../src/AdmittanceInstructions.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=LookupAnswer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LookupAnswer.js","sourceRoot":"","sources":["../../../src/LookupAnswer.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=LookupQuestion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LookupQuestion.js","sourceRoot":"","sources":["../../../src/LookupQuestion.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=SHIPAdvertisement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SHIPAdvertisement.js","sourceRoot":"","sources":["../../../src/SHIPAdvertisement.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=SLAPAdvertisement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SLAPAdvertisement.js","sourceRoot":"","sources":["../../../src/SLAPAdvertisement.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=STEAK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"STEAK.js","sourceRoot":"","sources":["../../../src/STEAK.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=TaggedBEEF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaggedBEEF.js","sourceRoot":"","sources":["../../../src/TaggedBEEF.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- /**
2
- * Instructs the Overlay Services Engine about which outputs to admit and which previous outputs to retain. Returned by a Topic Manager.
3
- */
4
- export type AdmittanceInstructions = {
5
- /**
6
- * The indices of all admissable outputs into the managed topic from the provided transaction.
7
- */
8
- outputsToAdmit: number[];
9
- /**
10
- * The indices of all inputs from the provided transaction which spend previously-admitted outputs that should be retained for historical record-keeping.
11
- */
12
- coinsToRetain: number[];
13
- };
14
- //# sourceMappingURL=AdmittanceInstructions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdmittanceInstructions.d.ts","sourceRoot":"","sources":["../../../src/AdmittanceInstructions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAA;IAExB;;OAEG;IACH,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,CAAA"}
@@ -1,15 +0,0 @@
1
- /**
2
- * How the Overlay Services Engine responds to a Lookup Question.
3
- * It may comprise either an output list or a freeform response from the Lookup Service.
4
- */
5
- export type LookupAnswer = {
6
- type: 'output-list';
7
- outputs: Array<{
8
- beef: number[];
9
- outputIndex: number;
10
- }>;
11
- } | {
12
- type: 'freeform';
13
- result: unknown;
14
- };
15
- //# sourceMappingURL=LookupAnswer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LookupAnswer.d.ts","sourceRoot":"","sources":["../../../src/LookupAnswer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,EAAE,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;CACH,GAAG;IACF,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA"}
@@ -1,15 +0,0 @@
1
- /**
2
- * The question asked to the Overlay Services Engine when a consumer of state wishes to look up information.
3
- */
4
- export type LookupQuestion = {
5
- /**
6
- * The identifier for a Lookup Service which the person asking the question wishes to use.
7
- */
8
- service: string;
9
- /**
10
- * The query which will be forwarded to the Lookup Service.
11
- * Its type depends on that prescribed by the Lookup Service employed.
12
- */
13
- query: unknown;
14
- };
15
- //# sourceMappingURL=LookupQuestion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LookupQuestion.d.ts","sourceRoot":"","sources":["../../../src/LookupQuestion.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAA;CACf,CAAA"}
@@ -1,9 +0,0 @@
1
- export interface SHIPAdvertisement {
2
- protocol: 'SHIP';
3
- identityKey: string;
4
- domain: string;
5
- topic: string;
6
- beef?: number[];
7
- outputIndex?: number;
8
- }
9
- //# sourceMappingURL=SHIPAdvertisement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SHIPAdvertisement.d.ts","sourceRoot":"","sources":["../../../src/SHIPAdvertisement.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
@@ -1,9 +0,0 @@
1
- export interface SLAPAdvertisement {
2
- protocol: 'SLAP';
3
- identityKey: string;
4
- domain: string;
5
- service: string;
6
- beef?: number[];
7
- outputIndex?: number;
8
- }
9
- //# sourceMappingURL=SLAPAdvertisement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SLAPAdvertisement.d.ts","sourceRoot":"","sources":["../../../src/SLAPAdvertisement.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
@@ -1,10 +0,0 @@
1
- import { AdmittanceInstructions } from './AdmittanceInstructions.js';
2
- /**
3
- * Submitted Transaction Execution AcKnowledgment
4
- *
5
- * @description
6
- * Comprises the topics where a transaction was submitted, and for each one, the output indices for the UTXOs newly admitted into the topics, and the coins retained.
7
- * An object whose keys are topic names and whose values are topical admittance instructions denoting the state of the submitted transaction with respect to the associated topic.
8
- */
9
- export type STEAK = Record<string, AdmittanceInstructions>;
10
- //# sourceMappingURL=STEAK.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"STEAK.d.ts","sourceRoot":"","sources":["../../../src/STEAK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Tagged BEEF
3
- *
4
- * @description
5
- * Tagged BEEF ([Background Evaluation Extended Format](https://brc.dev/62)) structure. Comprises a transaction, its SPV information, and the overlay topics where its inclusion is requested.
6
- */
7
- export type TaggedBEEF = {
8
- beef: number[];
9
- topics: string[];
10
- };
11
- //# sourceMappingURL=TaggedBEEF.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaggedBEEF.d.ts","sourceRoot":"","sources":["../../../src/TaggedBEEF.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA"}