@brightchain/brightchain-api-lib 0.13.0 → 0.14.0

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 (34) hide show
  1. package/package.json +2 -2
  2. package/src/lib/availability/configValidation.d.ts.map +1 -1
  3. package/src/lib/availability/configValidation.js +20 -0
  4. package/src/lib/availability/configValidation.js.map +1 -1
  5. package/src/lib/availability/gossipService.d.ts +150 -7
  6. package/src/lib/availability/gossipService.d.ts.map +1 -1
  7. package/src/lib/availability/gossipService.js +297 -17
  8. package/src/lib/availability/gossipService.js.map +1 -1
  9. package/src/lib/interfaces/websocketMessages.d.ts +30 -1
  10. package/src/lib/interfaces/websocketMessages.d.ts.map +1 -1
  11. package/src/lib/services/index.d.ts +1 -0
  12. package/src/lib/services/index.d.ts.map +1 -1
  13. package/src/lib/services/index.js +1 -0
  14. package/src/lib/services/index.js.map +1 -1
  15. package/src/lib/services/messagePassingService.d.ts +95 -5
  16. package/src/lib/services/messagePassingService.d.ts.map +1 -1
  17. package/src/lib/services/messagePassingService.js +187 -28
  18. package/src/lib/services/messagePassingService.js.map +1 -1
  19. package/src/lib/services/webSocketMessageServer.d.ts +18 -23
  20. package/src/lib/services/webSocketMessageServer.d.ts.map +1 -1
  21. package/src/lib/services/webSocketMessageServer.js +30 -46
  22. package/src/lib/services/webSocketMessageServer.js.map +1 -1
  23. package/src/lib/services/webSocketPeerProvider.d.ts +49 -0
  24. package/src/lib/services/webSocketPeerProvider.d.ts.map +1 -0
  25. package/src/lib/services/webSocketPeerProvider.js +133 -0
  26. package/src/lib/services/webSocketPeerProvider.js.map +1 -0
  27. package/src/lib/services/websocketHandler.d.ts +11 -8
  28. package/src/lib/services/websocketHandler.d.ts.map +1 -1
  29. package/src/lib/services/websocketHandler.js +33 -40
  30. package/src/lib/services/websocketHandler.js.map +1 -1
  31. package/src/lib/stores/diskMessageMetadataStore.d.ts +2 -2
  32. package/src/lib/stores/diskMessageMetadataStore.d.ts.map +1 -1
  33. package/src/lib/stores/diskMessageMetadataStore.js +1 -1
  34. package/src/lib/stores/diskMessageMetadataStore.js.map +1 -1
@@ -9,8 +9,22 @@
9
9
  * @see Requirements 6.1, 6.2, 6.3, 6.4, 6.5, 6.6
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.GossipService = void 0;
12
+ exports.GossipService = exports.InvalidGossipConfigError = void 0;
13
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
13
14
  // Note: DEFAULT_GOSSIP_CONFIG should be imported directly from @brightchain/brightchain-lib by consumers
15
+ /**
16
+ * Error thrown when gossip configuration is invalid.
17
+ * Non-positive fanout or TTL values will trigger this error at service initialization.
18
+ *
19
+ * @see Requirements 10.3, 10.4
20
+ */
21
+ class InvalidGossipConfigError extends Error {
22
+ constructor(message) {
23
+ super(message);
24
+ this.name = 'InvalidGossipConfigError';
25
+ }
26
+ }
27
+ exports.InvalidGossipConfigError = InvalidGossipConfigError;
14
28
  /**
15
29
  * Default gossip configuration values (local copy for use in this module).
16
30
  */
@@ -19,6 +33,10 @@ const defaultGossipConfig = {
19
33
  defaultTtl: 3,
20
34
  batchIntervalMs: 1000,
21
35
  maxBatchSize: 100,
36
+ messagePriority: {
37
+ normal: { fanout: 5, ttl: 5 },
38
+ high: { fanout: 7, ttl: 7 },
39
+ },
22
40
  };
23
41
  /**
24
42
  * Gossip Service Implementation
@@ -34,18 +52,40 @@ class GossipService {
34
52
  *
35
53
  * @param peerProvider - Provider for peer management operations
36
54
  * @param config - Gossip configuration (uses defaults if not provided)
55
+ * @param localUserIds - Set of local user IDs on this node (defaults to empty set)
56
+ * @param eciesService - Optional ECIES service for encrypting sensitive batches
57
+ * @param localPrivateKey - Optional local node private key (Buffer) for identifying the sender
58
+ * @throws {InvalidGossipConfigError} If configuration contains non-positive fanout or TTL values
59
+ * @see Requirements 10.3, 10.4
37
60
  */
38
- constructor(peerProvider, config = defaultGossipConfig) {
61
+ constructor(peerProvider, config = defaultGossipConfig, localUserIds, eciesService, localPrivateKey) {
39
62
  this.peerProvider = peerProvider;
40
63
  this.config = config;
64
+ this.eciesService = eciesService;
65
+ this.localPrivateKey = localPrivateKey;
41
66
  /**
42
67
  * Pending announcements waiting to be batched and sent.
43
68
  */
44
69
  this.pendingAnnouncements = [];
45
70
  /**
46
- * Registered announcement handlers.
71
+ * Registered announcement handlers (for non-message, non-ack announcements).
47
72
  */
48
73
  this.handlers = new Set();
74
+ /**
75
+ * Registered message delivery handlers.
76
+ * Called when a BlockAnnouncement with messageDelivery metadata is received
77
+ * and recipientIds match local users.
78
+ *
79
+ * @see Requirements 3.4, 3.5
80
+ */
81
+ this.messageDeliveryHandlers = new Set();
82
+ /**
83
+ * Registered delivery ack handlers.
84
+ * Called when a BlockAnnouncement of type 'ack' is received.
85
+ *
86
+ * @see Requirements 4.4
87
+ */
88
+ this.deliveryAckHandlers = new Set();
49
89
  /**
50
90
  * Batch timer handle.
51
91
  */
@@ -54,6 +94,10 @@ class GossipService {
54
94
  * Whether the service is running.
55
95
  */
56
96
  this.running = false;
97
+ this.localUserIds = localUserIds ?? new Set();
98
+ if (!(0, brightchain_lib_1.validateGossipConfig)(config)) {
99
+ throw new InvalidGossipConfigError('Invalid gossip configuration: all fanout and TTL values must be positive integers');
100
+ }
57
101
  }
58
102
  /**
59
103
  * Announce a new block to the network.
@@ -89,13 +133,76 @@ class GossipService {
89
133
  }
90
134
  /**
91
135
  * Handle an incoming block announcement from a peer.
92
- * Notifies handlers and optionally forwards with decremented TTL.
136
+ *
137
+ * Dispatches announcements based on their type and metadata:
138
+ * - 'ack' type: dispatches to delivery ack handlers only (Req 4.4)
139
+ * - 'add' with messageDelivery and matching local recipients: triggers message delivery
140
+ * handlers and auto-sends ack if ackRequired (Req 3.4, 3.5)
141
+ * - 'add' with messageDelivery but no matching local recipients: forwards normally (Req 3.6)
142
+ * - Plain 'add'/'remove' without messageDelivery: notifies general handlers and forwards (backward compat)
93
143
  *
94
144
  * @param announcement - The received announcement
95
- * @see Requirements 6.2, 6.4
145
+ * @see Requirements 3.4, 3.5, 3.6, 4.4
96
146
  */
97
147
  async handleAnnouncement(announcement) {
98
- // Notify all registered handlers
148
+ // Case 1: Ack announcements — dispatch to delivery ack handlers only
149
+ if (announcement.type === 'ack') {
150
+ for (const handler of this.deliveryAckHandlers) {
151
+ try {
152
+ handler(announcement);
153
+ }
154
+ catch {
155
+ // Ignore handler errors to prevent one handler from affecting others
156
+ }
157
+ }
158
+ // Forward ack with decremented TTL
159
+ if (announcement.ttl > 0) {
160
+ const forwardedAnnouncement = {
161
+ ...announcement,
162
+ ttl: announcement.ttl - 1,
163
+ };
164
+ this.queueAnnouncement(forwardedAnnouncement);
165
+ }
166
+ return;
167
+ }
168
+ // Case 2: Message delivery announcements
169
+ if (announcement.messageDelivery) {
170
+ const matchingLocalRecipients = announcement.messageDelivery.recipientIds.filter((id) => this.localUserIds.has(id));
171
+ if (matchingLocalRecipients.length > 0) {
172
+ // Req 3.4: recipientIds match local users — trigger message delivery handlers
173
+ for (const handler of this.messageDeliveryHandlers) {
174
+ try {
175
+ handler(announcement);
176
+ }
177
+ catch {
178
+ // Ignore handler errors to prevent one handler from affecting others
179
+ }
180
+ }
181
+ // Req 3.5: If ackRequired, automatically send delivery ack for each local recipient
182
+ if (announcement.messageDelivery.ackRequired) {
183
+ for (const recipientId of matchingLocalRecipients) {
184
+ await this.sendDeliveryAck({
185
+ messageId: announcement.messageDelivery.messageId,
186
+ recipientId,
187
+ status: 'delivered',
188
+ originalSenderNode: announcement.nodeId,
189
+ });
190
+ }
191
+ }
192
+ // Do NOT forward — this node is a recipient
193
+ return;
194
+ }
195
+ // Req 3.6: recipientIds don't match any local users — forward normally
196
+ if (announcement.ttl > 0) {
197
+ const forwardedAnnouncement = {
198
+ ...announcement,
199
+ ttl: announcement.ttl - 1,
200
+ };
201
+ this.queueAnnouncement(forwardedAnnouncement);
202
+ }
203
+ return;
204
+ }
205
+ // Case 3: Plain block announcements (no messageDelivery, not ack) — backward compatible
99
206
  for (const handler of this.handlers) {
100
207
  try {
101
208
  handler(announcement);
@@ -141,8 +248,13 @@ class GossipService {
141
248
  }
142
249
  /**
143
250
  * Immediately flush all pending announcements.
251
+ * Groups announcements by their required fanout (based on message priority)
252
+ * and sends each group to the appropriate number of peers.
144
253
  *
145
- * @see Requirements 6.6
254
+ * - Announcements with messageDelivery use priority-based fanout (Req 3.1, 3.2)
255
+ * - Announcements without messageDelivery use default fanout (Req 3.3)
256
+ *
257
+ * @see Requirements 3.1, 3.2, 3.3, 6.6
146
258
  */
147
259
  async flushAnnouncements() {
148
260
  if (this.pendingAnnouncements.length === 0) {
@@ -155,19 +267,40 @@ class GossipService {
155
267
  this.pendingAnnouncements = [];
156
268
  return;
157
269
  }
158
- // Select random peers for fanout
159
- const selectedPeers = this.selectRandomPeers(connectedPeers, this.config.fanout);
160
- // Split announcements into batches
161
- const batches = this.splitIntoBatches(this.pendingAnnouncements, this.config.maxBatchSize);
270
+ // Group announcements by their required fanout
271
+ const fanoutGroups = new Map();
272
+ for (const announcement of this.pendingAnnouncements) {
273
+ let fanout;
274
+ if (announcement.messageDelivery) {
275
+ // Use priority-based fanout for message announcements
276
+ const priorityConfig = this.config.messagePriority[announcement.messageDelivery.priority];
277
+ fanout = priorityConfig.fanout;
278
+ }
279
+ else {
280
+ // Use default fanout for non-message announcements (Req 3.3)
281
+ fanout = this.config.fanout;
282
+ }
283
+ const group = fanoutGroups.get(fanout);
284
+ if (group) {
285
+ group.push(announcement);
286
+ }
287
+ else {
288
+ fanoutGroups.set(fanout, [announcement]);
289
+ }
290
+ }
162
291
  // Clear pending before sending to avoid duplicates on retry
163
292
  this.pendingAnnouncements = [];
164
- // Send batches to selected peers
293
+ // Send each fanout group to the appropriate number of peers
165
294
  const sendPromises = [];
166
- for (const peerId of selectedPeers) {
167
- for (const batch of batches) {
168
- sendPromises.push(this.peerProvider.sendAnnouncementBatch(peerId, batch).catch(() => {
169
- // Ignore send errors - best effort delivery
170
- }));
295
+ for (const [fanout, announcements] of fanoutGroups) {
296
+ const selectedPeers = this.selectRandomPeers(connectedPeers, fanout);
297
+ const batches = this.splitIntoBatches(announcements, this.config.maxBatchSize);
298
+ for (const peerId of selectedPeers) {
299
+ for (const batch of batches) {
300
+ sendPromises.push(this.sendBatchToPeer(peerId, batch).catch(() => {
301
+ // Ignore send errors - best effort delivery
302
+ }));
303
+ }
171
304
  }
172
305
  }
173
306
  await Promise.all(sendPromises);
@@ -258,12 +391,159 @@ class GossipService {
258
391
  }
259
392
  return batches;
260
393
  }
394
+ /**
395
+ * Check if a batch contains sensitive metadata (messageDelivery or deliveryAck).
396
+ *
397
+ * @param announcements - The announcements to check
398
+ * @returns true if any announcement has messageDelivery or deliveryAck
399
+ * @see Requirements 4.1, 4.2
400
+ */
401
+ batchContainsSensitiveMetadata(announcements) {
402
+ return announcements.some((a) => a.messageDelivery !== undefined || a.deliveryAck !== undefined);
403
+ }
404
+ /**
405
+ * Encrypt a batch of announcements for a specific peer using ECIES.
406
+ * Serializes announcements to JSON, encrypts with the peer's public key,
407
+ * and returns a base64-encoded ciphertext string.
408
+ *
409
+ * @param announcements - The announcements to encrypt
410
+ * @param peerPublicKey - The peer's ECIES public key
411
+ * @returns Base64-encoded ECIES ciphertext
412
+ * @see Requirements 4.1, 4.3
413
+ */
414
+ async encryptBatchForPeer(announcements, peerPublicKey) {
415
+ if (!this.eciesService) {
416
+ throw new Error('ECIESService is required for encryption');
417
+ }
418
+ const json = JSON.stringify(announcements.map((a) => ({
419
+ type: a.type,
420
+ blockId: a.blockId,
421
+ nodeId: a.nodeId,
422
+ ttl: a.ttl,
423
+ ...(a.messageDelivery ? { messageDelivery: a.messageDelivery } : {}),
424
+ ...(a.deliveryAck ? { deliveryAck: a.deliveryAck } : {}),
425
+ })));
426
+ const plaintext = Buffer.from(json, 'utf-8');
427
+ const ciphertext = await this.eciesService.encryptWithLength(peerPublicKey, plaintext);
428
+ return Buffer.from(ciphertext).toString('base64');
429
+ }
430
+ /**
431
+ * Send a batch to a peer, encrypting if the batch is sensitive and the peer has a public key.
432
+ *
433
+ * - Sensitive batch + peer key available → encrypt and send with encryptedPayload
434
+ * - Sensitive batch + no peer key → send plaintext, log warning (Req 6.1, 6.2)
435
+ * - Non-sensitive batch → send plaintext
436
+ *
437
+ * @param peerId - The peer to send to
438
+ * @param batch - The announcements to send
439
+ * @see Requirements 4.1, 4.2, 6.1, 6.2
440
+ */
441
+ async sendBatchToPeer(peerId, batch) {
442
+ const isSensitive = this.batchContainsSensitiveMetadata(batch);
443
+ if (isSensitive && this.eciesService) {
444
+ const peerKey = await this.peerProvider.getPeerPublicKey(peerId);
445
+ if (peerKey) {
446
+ // Encrypt and send with encrypted payload
447
+ const encryptedPayload = await this.encryptBatchForPeer(batch, peerKey);
448
+ await this.peerProvider.sendAnnouncementBatch(peerId, [], {
449
+ encryptedPayload,
450
+ senderNodeId: this.peerProvider.getLocalNodeId(),
451
+ });
452
+ return;
453
+ }
454
+ // Sensitive but no peer key — fallback to plaintext with warning
455
+ console.warn(`[GossipService] Sending sensitive batch in plaintext to peer ${peerId}: no public key registered`);
456
+ }
457
+ // Non-sensitive or fallback: send plaintext
458
+ await this.peerProvider.sendAnnouncementBatch(peerId, batch);
459
+ }
261
460
  /**
262
461
  * Clear all pending announcements (for testing).
263
462
  */
264
463
  clearPending() {
265
464
  this.pendingAnnouncements = [];
266
465
  }
466
+ /**
467
+ * Announce message blocks to the network with message delivery metadata.
468
+ * Creates a BlockAnnouncement for each blockId with priority-based TTL
469
+ * from config and queues them for batch sending.
470
+ *
471
+ * @param blockIds - The block IDs containing the message content
472
+ * @param metadata - Message delivery metadata including recipients, priority, and CBL block ID
473
+ * @see Requirements 3.1, 3.2, 3.3
474
+ */
475
+ async announceMessage(blockIds, metadata) {
476
+ // Determine TTL based on priority (Req 3.1: normal → 5, Req 3.2: high → 7)
477
+ const priorityConfig = this.config.messagePriority[metadata.priority];
478
+ const ttl = priorityConfig.ttl;
479
+ // Create a BlockAnnouncement for each blockId
480
+ for (const blockId of blockIds) {
481
+ const announcement = {
482
+ type: 'add',
483
+ blockId,
484
+ nodeId: this.peerProvider.getLocalNodeId(),
485
+ timestamp: new Date(),
486
+ ttl,
487
+ messageDelivery: metadata,
488
+ };
489
+ this.queueAnnouncement(announcement);
490
+ }
491
+ }
492
+ /**
493
+ * Send a delivery acknowledgment back through the gossip network.
494
+ * Stub implementation — will be fully implemented in task 4.3.
495
+ *
496
+ * @param _ack - Delivery acknowledgment metadata
497
+ * @see Requirements 4.1
498
+ */
499
+ async sendDeliveryAck(ack) {
500
+ const announcement = {
501
+ type: 'ack',
502
+ blockId: ack.messageId,
503
+ nodeId: this.peerProvider.getLocalNodeId(),
504
+ timestamp: new Date(),
505
+ ttl: this.config.defaultTtl,
506
+ deliveryAck: ack,
507
+ };
508
+ this.queueAnnouncement(announcement);
509
+ }
510
+ /**
511
+ * Register a handler for message delivery events.
512
+ * The handler is called when a BlockAnnouncement with messageDelivery
513
+ * metadata is received and recipientIds match local users.
514
+ *
515
+ * @param handler - Function to call when a message delivery announcement is received
516
+ * @see Requirements 3.4, 3.5
517
+ */
518
+ onMessageDelivery(handler) {
519
+ this.messageDeliveryHandlers.add(handler);
520
+ }
521
+ /**
522
+ * Remove a message delivery event handler.
523
+ *
524
+ * @param handler - The handler to remove
525
+ */
526
+ offMessageDelivery(handler) {
527
+ this.messageDeliveryHandlers.delete(handler);
528
+ }
529
+ /**
530
+ * Register a handler for delivery acknowledgment events.
531
+ * The handler is called when a BlockAnnouncement of type 'ack' is received.
532
+ *
533
+ * @param handler - Function to call when a delivery ack announcement is received
534
+ * @see Requirements 4.4
535
+ */
536
+ onDeliveryAck(handler) {
537
+ this.deliveryAckHandlers.add(handler);
538
+ }
539
+ /**
540
+ * Remove a delivery acknowledgment event handler.
541
+ *
542
+ * @param handler - The handler to remove
543
+ */
544
+ offDeliveryAck(handler) {
545
+ this.deliveryAckHandlers.delete(handler);
546
+ }
267
547
  }
268
548
  exports.GossipService = GossipService;
269
549
  //# sourceMappingURL=gossipService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gossipService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gossipService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,kEAQsC;AAGtC,yGAAyG;AAEzG;;;;;GAKG;AACH,MAAa,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED;;GAEG;AACH,MAAM,mBAAmB,GAAiB;IACxC,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,CAAC;IACb,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,GAAG;IACjB,eAAe,EAAE;QACf,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAC7B,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;KAC5B;CACF,CAAC;AA+CF;;;;;;;GAOG;AACH,MAAa,aAAa;IAiDxB;;;;;;;;;;OAUG;IACH,YACmB,YAA2B,EAC3B,SAAuB,mBAAmB,EAC3D,YAA0B,EACT,YAA2B,EAC3B,eAAwB;QAJxB,iBAAY,GAAZ,YAAY,CAAe;QAC3B,WAAM,GAAN,MAAM,CAAoC;QAE1C,iBAAY,GAAZ,YAAY,CAAe;QAC3B,oBAAe,GAAf,eAAe,CAAS;QAhE3C;;WAEG;QACK,yBAAoB,GAAwB,EAAE,CAAC;QAEvD;;WAEG;QACK,aAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;QAEvD;;;;;;WAMG;QACK,4BAAuB,GAE3B,IAAI,GAAG,EAAE,CAAC;QAEd;;;;;WAKG;QACK,wBAAmB,GACzB,IAAI,GAAG,EAAE,CAAC;QAUZ;;WAEG;QACK,eAAU,GAA0C,IAAI,CAAC;QAEjE;;WAEG;QACK,YAAO,GAAG,KAAK,CAAC;QAoBtB,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAA,sCAAoB,EAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,wBAAwB,CAChC,mFAAmF,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,YAAY,GAAsB;YACtC,IAAI,EAAE,KAAK;YACX,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SAC5B,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,MAAM,YAAY,GAAsB;YACtC,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SAC5B,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,kBAAkB,CAAC,YAA+B;QACtD,qEAAqE;QACrE,IAAI,YAAY,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC/C,IAAI,CAAC;oBACH,OAAO,CAAC,YAAY,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,qEAAqE;gBACvE,CAAC;YACH,CAAC;YACD,mCAAmC;YACnC,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,qBAAqB,GAAsB;oBAC/C,GAAG,YAAY;oBACf,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC;iBAC1B,CAAC;gBACF,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;YAChD,CAAC;YACD,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;YACjC,MAAM,uBAAuB,GAC3B,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CACtD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAC1B,CAAC;YAEJ,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,8EAA8E;gBAC9E,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBACnD,IAAI,CAAC;wBACH,OAAO,CAAC,YAAY,CAAC,CAAC;oBACxB,CAAC;oBAAC,MAAM,CAAC;wBACP,qEAAqE;oBACvE,CAAC;gBACH,CAAC;gBAED,oFAAoF;gBACpF,IAAI,YAAY,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;oBAC7C,KAAK,MAAM,WAAW,IAAI,uBAAuB,EAAE,CAAC;wBAClD,MAAM,IAAI,CAAC,eAAe,CAAC;4BACzB,SAAS,EAAE,YAAY,CAAC,eAAe,CAAC,SAAS;4BACjD,WAAW;4BACX,MAAM,EAAE,WAAW;4BACnB,kBAAkB,EAAE,YAAY,CAAC,MAAM;yBACxC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,4CAA4C;gBAC5C,OAAO;YACT,CAAC;YAED,uEAAuE;YACvE,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,qBAAqB,GAAsB;oBAC/C,GAAG,YAAY;oBACf,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC;iBAC1B,CAAC;gBACF,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;YAChD,CAAC;YACD,OAAO;QACT,CAAC;QAED,wFAAwF;QACxF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,OAAO,CAAC,YAAY,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;YACvE,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,qBAAqB,GAAsB;gBAC/C,GAAG,YAAY;gBACf,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC;aAC1B,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,OAA4B;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,uBAAuB;QACrB,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,kBAAkB;QACtB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;QAC/D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,qCAAqC;YACrC,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,+CAA+C;QAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,EAA+B,CAAC;QAE5D,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrD,IAAI,MAAc,CAAC;YAEnB,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;gBACjC,sDAAsD;gBACtD,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACrE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,6DAA6D;gBAC7D,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9B,CAAC;YAED,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAE/B,4DAA4D;QAC5D,MAAM,YAAY,GAAoB,EAAE,CAAC;QAEzC,KAAK,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,YAAY,EAAE,CAAC;YACnD,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CACnC,aAAa,EACb,IAAI,CAAC,MAAM,CAAC,YAAY,CACzB,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,YAAY,CAAC,IAAI,CACf,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBAC7C,4CAA4C;oBAC9C,CAAC,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,sBAAsB;YACxB,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,oCAAoC;QACpC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,YAA+B;QACvD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE7C,qDAAqD;QACrD,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACjE,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,sBAAsB;YACxB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,iBAAiB,CAAC,KAAe,EAAE,KAAa;QACtD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,uDAAuD;QACvD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;OAOG;IACK,gBAAgB,CACtB,aAAkC,EAClC,OAAe;QAEf,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACK,8BAA8B,CACpC,aAAkC;QAElC,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,CACtE,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,mBAAmB,CAC/B,aAAkC,EAClC,aAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC,CAAC,CACJ,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAC1D,aAAa,EACb,SAAS,CACV,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,eAAe,CAC3B,MAAc,EACd,KAA0B;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;QAE/D,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEjE,IAAI,OAAO,EAAE,CAAC;gBACZ,0CAA0C;gBAC1C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACxE,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE;oBACxD,gBAAgB;oBAChB,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;iBACjD,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,iEAAiE;YACjE,OAAO,CAAC,IAAI,CACV,gEAAgE,MAAM,4BAA4B,CACnG,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,eAAe,CACnB,QAAkB,EAClB,QAAiC;QAEjC,2EAA2E;QAC3E,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;QAE/B,8CAA8C;QAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAsB;gBACtC,IAAI,EAAE,KAAK;gBACX,OAAO;gBACP,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;gBAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,GAAG;gBACH,eAAe,EAAE,QAAQ;aAC1B,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CAAC,GAAwB;QAC5C,MAAM,YAAY,GAAsB;YACtC,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,GAAG,CAAC,SAAS;YACtB,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAC3B,WAAW,EAAE,GAAG;SACjB,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAkD;QAClE,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,OAAkD;QACnE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,OAAkD;QAC9D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,OAAkD;QAC/D,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF;AA5lBD,sCA4lBC"}
@@ -121,14 +121,43 @@ export interface IAnnouncementBatchMessage {
121
121
  type: GossipMessageType.ANNOUNCEMENT_BATCH;
122
122
  payload: {
123
123
  announcements: Array<{
124
- type: 'add' | 'remove';
124
+ type: 'add' | 'remove' | 'ack';
125
125
  blockId: string;
126
126
  nodeId: string;
127
127
  ttl: number;
128
+ messageDelivery?: {
129
+ messageId: string;
130
+ recipientIds: string[];
131
+ priority: 'normal' | 'high';
132
+ blockIds: string[];
133
+ cblBlockId: string;
134
+ ackRequired: boolean;
135
+ };
136
+ deliveryAck?: {
137
+ messageId: string;
138
+ recipientId: string;
139
+ status: 'delivered' | 'read' | 'failed' | 'bounced';
140
+ originalSenderNode: string;
141
+ };
128
142
  }>;
143
+ /** Present when the batch is encrypted; announcements array is empty */
144
+ encryptedPayload?: string;
145
+ /** Sender node ID, present when encryptedPayload is set */
146
+ senderNodeId?: string;
129
147
  };
130
148
  timestamp: string;
131
149
  }
150
+ /**
151
+ * Encrypted gossip payload — an ECIES-encrypted announcement batch.
152
+ * Used as an alternative to the plaintext announcements array when
153
+ * the batch contains sensitive metadata (messageDelivery / deliveryAck).
154
+ */
155
+ export interface IEncryptedGossipPayload {
156
+ /** Base64-encoded ECIES ciphertext in WithLength format */
157
+ encryptedPayload: string;
158
+ /** Node ID of the sender that encrypted this payload */
159
+ senderNodeId: string;
160
+ }
132
161
  /**
133
162
  * Ping message
134
163
  */
@@ -1 +1 @@
1
- {"version":3,"file":"websocketMessages.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/interfaces/websocketMessages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocketMessages.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/interfaces/websocketMessages.ts"],"names":[],"mappings":"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"}
@@ -18,4 +18,5 @@ export * from './role';
18
18
  export * from './secureKeyStorage';
19
19
  export * from './websocketHandler';
20
20
  export * from './webSocketMessageServer';
21
+ export * from './webSocketPeerProvider';
21
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
@@ -23,4 +23,5 @@ tslib_1.__exportStar(require("./role"), exports);
23
23
  tslib_1.__exportStar(require("./secureKeyStorage"), exports);
24
24
  tslib_1.__exportStar(require("./websocketHandler"), exports);
25
25
  tslib_1.__exportStar(require("./webSocketMessageServer"), exports);
26
+ tslib_1.__exportStar(require("./webSocketPeerProvider"), exports);
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/index.ts"],"names":[],"mappings":";;;;AAAA,iDAAuB;AACvB,iDAAuB;AACvB,mDAAyB;AACzB,gEAAsC;AACtC,uDAA6B;AAC7B,8DAAoC;AACpC,kDAAwB;AACxB,oEAA0C;AAC1C,6BAAuC;AAA9B,qGAAA,cAAc,OAAA;AACvB,8DAAoC;AACpC,4DAAkC;AAClC,0EAAgD;AAChD,kEAAwC;AACxC,+DAAqC;AACrC,mDAAyB;AACzB,wDAA8B;AAC9B,iDAAuB;AACvB,6DAAmC;AACnC,6DAAmC;AACnC,mEAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/index.ts"],"names":[],"mappings":";;;;AAAA,iDAAuB;AACvB,iDAAuB;AACvB,mDAAyB;AACzB,gEAAsC;AACtC,uDAA6B;AAC7B,8DAAoC;AACpC,kDAAwB;AACxB,oEAA0C;AAC1C,6BAAuC;AAA9B,qGAAA,cAAc,OAAA;AACvB,8DAAoC;AACpC,4DAAkC;AAClC,0EAAgD;AAChD,kEAAwC;AACxC,+DAAqC;AACrC,mDAAyB;AACzB,wDAA8B;AAC9B,iDAAuB;AACvB,6DAAmC;AACnC,6DAAmC;AACnC,mEAAyC;AACzC,kEAAwC"}
@@ -1,17 +1,92 @@
1
- import { IMessageCBLOptions as ICreateMessageOptions, IMessageMetadata, IMessageMetadataStore, MessageCBLService } from '@brightchain/brightchain-lib';
1
+ import { IMessageCBLOptions as ICreateMessageOptions, IGossipService, IMessageMetadata, IMessageMetadataStore, MessageCBLService, type IDeliveryReceipt, type IEmailContent, type IEmailInput, type IEmailMetadata, type IEmailMetadataStore, type IEmailServiceConfig, type IInboxQuery, type IInboxResult, type IMailbox, type IReplyInput, type ISendEmailResult } from '@brightchain/brightchain-lib';
2
2
  import { EventNotificationSystem } from './eventNotificationSystem';
3
- import { WebSocketMessageServer } from './webSocketMessageServer';
4
3
  /**
5
- * High-level message passing service coordinating storage, routing, and events
4
+ * High-level message passing service coordinating storage, routing, and events.
5
+ *
6
+ * Uses IGossipService for message delivery instead of WebSocketMessageServer.
7
+ * Messages are announced via gossip protocol and delivery acknowledgments
8
+ * are received through gossip ack events.
9
+ *
10
+ * @see Requirements 7.1, 7.2, 7.3, 7.4, 7.5
6
11
  */
7
12
  export declare class MessagePassingService {
8
13
  private messageCBL;
9
14
  private metadataStore;
10
15
  private eventSystem;
11
- private wsServer;
12
- constructor(messageCBL: MessageCBLService, metadataStore: IMessageMetadataStore, eventSystem: EventNotificationSystem, wsServer: WebSocketMessageServer);
16
+ private gossipService;
17
+ private emailService?;
18
+ constructor(messageCBL: MessageCBLService, metadataStore: IMessageMetadataStore, eventSystem: EventNotificationSystem, gossipService: IGossipService);
19
+ /**
20
+ * Wire up the EmailMessageService for email-specific operations.
21
+ *
22
+ * Call this after construction to enable email methods (sendEmail,
23
+ * getEmail, queryInbox, etc.). Without this, email methods will throw.
24
+ */
25
+ configureEmail(emailMetadataStore: IEmailMetadataStore, config?: Partial<IEmailServiceConfig>): void;
26
+ /**
27
+ * Returns the underlying EmailMessageService.
28
+ * @throws Error if email has not been configured via configureEmail()
29
+ */
30
+ private getEmailService;
31
+ /**
32
+ * Send an email message via the BrightChain email protocol.
33
+ *
34
+ * @see Requirements 15.1, 15.4
35
+ */
36
+ sendEmail(email: IEmailInput): Promise<ISendEmailResult>;
37
+ /**
38
+ * Retrieve email metadata by message ID.
39
+ */
40
+ getEmail(messageId: string): Promise<IEmailMetadata | null>;
41
+ /**
42
+ * Retrieve full email content including MIME parts and attachments.
43
+ */
44
+ getEmailContent(messageId: string): Promise<IEmailContent>;
45
+ /**
46
+ * Delete an email by message ID.
47
+ */
48
+ deleteEmail(messageId: string): Promise<void>;
49
+ /**
50
+ * Query a user's inbox with filtering, sorting, and pagination.
51
+ *
52
+ * @see Requirements 13.1, 13.2, 13.3, 13.6, 13.7
53
+ */
54
+ queryInbox(userId: string, query: IInboxQuery): Promise<IInboxResult>;
55
+ /**
56
+ * Mark an email as read for a specific user.
57
+ */
58
+ markEmailAsRead(messageId: string, userId: string): Promise<void>;
59
+ /**
60
+ * Get unread email count for a user.
61
+ */
62
+ getUnreadEmailCount(userId: string): Promise<number>;
63
+ /**
64
+ * Get all emails in a thread.
65
+ */
66
+ getEmailThread(messageId: string): Promise<IEmailMetadata[]>;
67
+ /**
68
+ * Create a reply to an existing email.
69
+ *
70
+ * @see Requirements 10.1, 10.2, 10.3
71
+ */
72
+ createEmailReply(originalId: string, replyContent: IReplyInput): Promise<ISendEmailResult>;
73
+ /**
74
+ * Forward an email to new recipients.
75
+ *
76
+ * @see Requirements 17.1, 17.2, 17.3
77
+ */
78
+ forwardEmail(originalId: string, forwardTo: IMailbox[]): Promise<ISendEmailResult>;
79
+ /**
80
+ * Get delivery status for all recipients of an email.
81
+ */
82
+ getEmailDeliveryStatus(messageId: string): Promise<Map<string, IDeliveryReceipt>>;
13
83
  /**
14
84
  * Send a message
85
+ *
86
+ * Stores the message via MessageCBLService, emits MESSAGE_STORED event,
87
+ * then announces the message via gossip protocol for delivery.
88
+ *
89
+ * @see Requirements 7.1, 7.3, 7.5
15
90
  */
16
91
  sendMessage(content: Buffer, senderId: string, options: ICreateMessageOptions): Promise<{
17
92
  messageId: string;
@@ -19,16 +94,31 @@ export declare class MessagePassingService {
19
94
  }>;
20
95
  /**
21
96
  * Get message content
97
+ *
98
+ * @see Requirements 7.5
22
99
  */
23
100
  getMessage(messageId: string): Promise<Buffer | null>;
24
101
  /**
25
102
  * Query messages
103
+ *
104
+ * @see Requirements 7.5
26
105
  */
27
106
  queryMessages(query: Record<string, unknown>): Promise<IMessageMetadata[]>;
28
107
  /**
29
108
  * Delete message
109
+ *
110
+ * @see Requirements 7.5
30
111
  */
31
112
  deleteMessage(messageId: string): Promise<void>;
113
+ /**
114
+ * Set up handlers for gossip delivery events.
115
+ *
116
+ * Listens for:
117
+ * - Message delivery announcements (incoming messages)
118
+ * - Delivery acknowledgments (confirmation of sent messages)
119
+ *
120
+ * @see Requirements 7.4
121
+ */
32
122
  private setupHandlers;
33
123
  }
34
124
  //# sourceMappingURL=messagePassingService.d.ts.map