@massalabs/gossip-sdk 0.0.2-dev.20260409113004 → 0.0.2-dev.20260410070156

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.
@@ -1,10 +1,5 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
- export function start(): void;
4
- /**
5
- * Generates user keys from a passphrase using password-based key derivation.
6
- */
7
- export function generate_user_keys(passphrase: string): UserKeys;
8
3
  /**
9
4
  * Encrypts data using AES-256-SIV authenticated encryption.
10
5
  *
@@ -82,6 +77,15 @@ export function aead_decrypt(
82
77
  ciphertext: Uint8Array,
83
78
  aad: Uint8Array
84
79
  ): Uint8Array | undefined;
80
+ export function start(): void;
81
+ /**
82
+ * Generates user keys from a passphrase (typically a BIP39 mnemonic).
83
+ *
84
+ * Derives gossip keys (DSA, KEM, Massa) and, when the passphrase is a
85
+ * valid BIP39 mnemonic, the EVM address — all in a single WASM call so
86
+ * the mnemonic crosses the JS boundary only once.
87
+ */
88
+ export function generate_user_keys(passphrase: string): UserKeys;
85
89
  /**
86
90
  * Session status indicating the state of a peer session.
87
91
  */
@@ -123,10 +127,18 @@ export class EncryptionKey {
123
127
  private constructor();
124
128
  free(): void;
125
129
  [Symbol.dispose](): void;
130
+ /**
131
+ * Creates an encryption key from raw bytes (must be 64 bytes).
132
+ */
133
+ static from_bytes(bytes: Uint8Array): EncryptionKey;
126
134
  /**
127
135
  * Generates a new random encryption key (64 bytes).
128
136
  */
129
137
  static generate(): EncryptionKey;
138
+ /**
139
+ * Gets the raw bytes of the encryption key.
140
+ */
141
+ to_bytes(): Uint8Array;
130
142
  /**
131
143
  * Generates a deterministic encryption key (64 bytes) from a seed and salt.
132
144
  *
@@ -137,14 +149,6 @@ export class EncryptionKey {
137
149
  * - `salt`: unique, random salt (minimum 8 bytes, recommended 16+ bytes)
138
150
  */
139
151
  static from_seed(seed: string, salt: Uint8Array): EncryptionKey;
140
- /**
141
- * Creates an encryption key from raw bytes (must be 64 bytes).
142
- */
143
- static from_bytes(bytes: Uint8Array): EncryptionKey;
144
- /**
145
- * Gets the raw bytes of the encryption key.
146
- */
147
- to_bytes(): Uint8Array;
148
152
  }
149
153
  /**
150
154
  * Nonce for AEAD operations (AES-256-SIV).
@@ -156,14 +160,14 @@ export class Nonce {
156
160
  private constructor();
157
161
  free(): void;
158
162
  [Symbol.dispose](): void;
159
- /**
160
- * Generates a new random nonce (16 bytes).
161
- */
162
- static generate(): Nonce;
163
163
  /**
164
164
  * Creates a nonce from raw bytes (must be 16 bytes).
165
165
  */
166
166
  static from_bytes(bytes: Uint8Array): Nonce;
167
+ /**
168
+ * Generates a new random nonce (16 bytes).
169
+ */
170
+ static generate(): Nonce;
167
171
  /**
168
172
  * Gets the raw bytes of the nonce.
169
173
  */
@@ -176,22 +180,22 @@ export class ReceiveMessageOutput {
176
180
  private constructor();
177
181
  free(): void;
178
182
  [Symbol.dispose](): void;
179
- /**
180
- * Gets the received message contents.
181
- */
182
- readonly message: Uint8Array;
183
- /**
184
- * Gets the message timestamp (milliseconds since Unix epoch).
185
- */
186
- readonly timestamp: number;
187
183
  /**
188
184
  * Gets the list of newly acknowledged seekers.
189
185
  */
190
186
  readonly acknowledged_seekers: Array<any>;
187
+ /**
188
+ * Gets the received message contents.
189
+ */
190
+ readonly message: Uint8Array;
191
191
  /**
192
192
  * Gets the sender's user id (32 bytes).
193
193
  */
194
194
  readonly user_id: Uint8Array;
195
+ /**
196
+ * Gets the message timestamp (milliseconds since Unix epoch).
197
+ */
198
+ readonly timestamp: number;
195
199
  }
196
200
  /**
197
201
  * Output from sending a message.
@@ -200,14 +204,14 @@ export class SendMessageOutput {
200
204
  private constructor();
201
205
  free(): void;
202
206
  [Symbol.dispose](): void;
203
- /**
204
- * Gets the seeker (identifier for message board lookup).
205
- */
206
- readonly seeker: Uint8Array;
207
207
  /**
208
208
  * Gets the encrypted message data.
209
209
  */
210
210
  readonly data: Uint8Array;
211
+ /**
212
+ * Gets the seeker (identifier for message board lookup).
213
+ */
214
+ readonly seeker: Uint8Array;
211
215
  }
212
216
  /**
213
217
  * Session manager configuration for controlling session behavior.
@@ -215,6 +219,18 @@ export class SendMessageOutput {
215
219
  export class SessionConfig {
216
220
  free(): void;
217
221
  [Symbol.dispose](): void;
222
+ /**
223
+ * Creates a default configuration with sensible defaults:
224
+ * - Announcement age: 1 week
225
+ * - Announcement future: 1 minute
226
+ * - Message age: 1 week
227
+ * - Message future: 1 minute
228
+ * - Session inactivity: 1 week
229
+ * - Keep-alive interval: 1 day
230
+ * - Max lag: 10000 messages
231
+ * - Max peer lag before keep-alive: 8 messages
232
+ */
233
+ static new_default(): SessionConfig;
218
234
  /**
219
235
  * Creates a new session configuration with the given parameters.
220
236
  */
@@ -228,18 +244,6 @@ export class SessionConfig {
228
244
  max_session_lag_length: bigint,
229
245
  max_keep_alive_peer_lag_length: bigint
230
246
  );
231
- /**
232
- * Creates a default configuration with sensible defaults:
233
- * - Announcement age: 1 week
234
- * - Announcement future: 1 minute
235
- * - Message age: 1 week
236
- * - Message future: 1 minute
237
- * - Session inactivity: 1 week
238
- * - Keep-alive interval: 1 day
239
- * - Max lag: 10000 messages
240
- * - Max peer lag before keep-alive: 8 messages
241
- */
242
- static new_default(): SessionConfig;
243
247
  }
244
248
  /**
245
249
  * Session manager wrapper for WebAssembly.
@@ -248,9 +252,20 @@ export class SessionManagerWrapper {
248
252
  free(): void;
249
253
  [Symbol.dispose](): void;
250
254
  /**
251
- * Creates a new session manager with the given configuration.
255
+ * Discards a peer and all associated session state.
252
256
  */
253
- constructor(config: SessionConfig);
257
+ peer_discard(peer_id: Uint8Array): void;
258
+ /**
259
+ * Sends a message to a peer.
260
+ */
261
+ send_message(
262
+ peer_id: Uint8Array,
263
+ message_contents: Uint8Array
264
+ ): SendMessageOutput | undefined;
265
+ /**
266
+ * Serializes and encrypts the session manager into a blob.
267
+ */
268
+ to_encrypted_blob(key: EncryptionKey): Uint8Array;
254
269
  /**
255
270
  * Deserializes a session manager from an encrypted blob.
256
271
  */
@@ -259,9 +274,9 @@ export class SessionManagerWrapper {
259
274
  key: EncryptionKey
260
275
  ): SessionManagerWrapper;
261
276
  /**
262
- * Serializes and encrypts the session manager into a blob.
277
+ * Gets the session status for a peer.
263
278
  */
264
- to_encrypted_blob(key: EncryptionKey): Uint8Array;
279
+ peer_session_status(peer_id: Uint8Array): SessionStatus;
265
280
  /**
266
281
  * Establishes an outgoing session with a peer.
267
282
  *
@@ -335,13 +350,6 @@ export class SessionManagerWrapper {
335
350
  * Gets the list of message board seekers to monitor.
336
351
  */
337
352
  get_message_board_read_keys(): Array<any>;
338
- /**
339
- * Sends a message to a peer.
340
- */
341
- send_message(
342
- peer_id: Uint8Array,
343
- message_contents: Uint8Array
344
- ): SendMessageOutput | undefined;
345
353
  /**
346
354
  * Processes an incoming message from the message board.
347
355
  */
@@ -351,21 +359,17 @@ export class SessionManagerWrapper {
351
359
  our_sk: UserSecretKeys
352
360
  ): ReceiveMessageOutput | undefined;
353
361
  /**
354
- * Gets the list of all peer IDs.
355
- */
356
- peer_list(): Array<any>;
357
- /**
358
- * Gets the session status for a peer.
359
- */
360
- peer_session_status(peer_id: Uint8Array): SessionStatus;
361
- /**
362
- * Discards a peer and all associated session state.
362
+ * Creates a new session manager with the given configuration.
363
363
  */
364
- peer_discard(peer_id: Uint8Array): void;
364
+ constructor(config: SessionConfig);
365
365
  /**
366
366
  * Refreshes sessions and returns peer IDs that need keep-alive messages.
367
367
  */
368
368
  refresh(): Array<any>;
369
+ /**
370
+ * Gets the list of all peer IDs.
371
+ */
372
+ peer_list(): Array<any>;
369
373
  }
370
374
  /**
371
375
  * User keypair containing both public and secret keys.
@@ -374,6 +378,10 @@ export class UserKeys {
374
378
  private constructor();
375
379
  free(): void;
376
380
  [Symbol.dispose](): void;
381
+ /**
382
+ * EIP-55 checksummed EVM address (0x…) derived from the mnemonic.
383
+ */
384
+ evm_address(): string;
377
385
  /**
378
386
  * Gets the public keys.
379
387
  */
@@ -391,21 +399,17 @@ export class UserPublicKeys {
391
399
  free(): void;
392
400
  [Symbol.dispose](): void;
393
401
  /**
394
- * Derives a unique user ID from the public keys.
402
+ * Deserializes public keys from bytes.
395
403
  */
396
- derive_id(): Uint8Array;
404
+ static from_bytes(bytes: Uint8Array): UserPublicKeys;
397
405
  /**
398
406
  * Serializes the public keys to bytes.
399
407
  */
400
408
  to_bytes(): Uint8Array;
401
409
  /**
402
- * Deserializes public keys from bytes.
403
- */
404
- static from_bytes(bytes: Uint8Array): UserPublicKeys;
405
- /**
406
- * Gets the DSA verification key bytes.
410
+ * Derives a unique user ID from the public keys.
407
411
  */
408
- readonly dsa_verification_key: Uint8Array;
412
+ derive_id(): Uint8Array;
409
413
  /**
410
414
  * Gets the KEM public key bytes.
411
415
  */
@@ -414,6 +418,10 @@ export class UserPublicKeys {
414
418
  * Gets the Massa public key bytes.
415
419
  */
416
420
  readonly massa_public_key: Uint8Array;
421
+ /**
422
+ * Gets the DSA verification key bytes.
423
+ */
424
+ readonly dsa_verification_key: Uint8Array;
417
425
  }
418
426
  /**
419
427
  * User secret keys for signing and decryption.
@@ -422,22 +430,22 @@ export class UserSecretKeys {
422
430
  private constructor();
423
431
  free(): void;
424
432
  [Symbol.dispose](): void;
425
- /**
426
- * Serializes the secret keys to bytes for secure storage.
427
- */
428
- to_bytes(): Uint8Array;
429
433
  /**
430
434
  * Deserializes secret keys from bytes.
431
435
  */
432
436
  static from_bytes(bytes: Uint8Array): UserSecretKeys;
433
437
  /**
434
- * Gets the DSA signing key bytes.
438
+ * Serializes the secret keys to bytes for secure storage.
435
439
  */
436
- readonly dsa_signing_key: Uint8Array;
440
+ to_bytes(): Uint8Array;
437
441
  /**
438
442
  * Gets the KEM secret key bytes.
439
443
  */
440
444
  readonly kem_secret_key: Uint8Array;
445
+ /**
446
+ * Gets the DSA signing key bytes.
447
+ */
448
+ readonly dsa_signing_key: Uint8Array;
441
449
  /**
442
450
  * Gets only the Massa secret key bytes
443
451
  */
@@ -453,104 +461,71 @@ export type InitInput =
453
461
 
454
462
  export interface InitOutput {
455
463
  readonly memory: WebAssembly.Memory;
464
+ readonly __wbg_announcementresult_free: (a: number, b: number) => void;
465
+ readonly __wbg_encryptionkey_free: (a: number, b: number) => void;
466
+ readonly __wbg_nonce_free: (a: number, b: number) => void;
467
+ readonly __wbg_receivemessageoutput_free: (a: number, b: number) => void;
468
+ readonly __wbg_sendmessageoutput_free: (a: number, b: number) => void;
456
469
  readonly __wbg_sessionconfig_free: (a: number, b: number) => void;
457
- readonly sessionconfig_new: (
470
+ readonly __wbg_sessionmanagerwrapper_free: (a: number, b: number) => void;
471
+ readonly __wbg_userkeys_free: (a: number, b: number) => void;
472
+ readonly __wbg_userpublickeys_free: (a: number, b: number) => void;
473
+ readonly __wbg_usersecretkeys_free: (a: number, b: number) => void;
474
+ readonly aead_decrypt: (
458
475
  a: number,
459
476
  b: number,
460
477
  c: number,
461
478
  d: number,
462
479
  e: number,
463
- f: number,
464
- g: bigint,
465
- h: bigint
466
- ) => number;
467
- readonly sessionconfig_new_default: () => number;
468
- readonly __wbg_userpublickeys_free: (a: number, b: number) => void;
469
- readonly userpublickeys_derive_id: (a: number) => [number, number];
470
- readonly userpublickeys_dsa_verification_key: (a: number) => [number, number];
471
- readonly userpublickeys_kem_public_key: (a: number) => [number, number];
472
- readonly userpublickeys_massa_public_key: (a: number) => [number, number];
473
- readonly userpublickeys_to_bytes: (
474
- a: number
475
- ) => [number, number, number, number];
476
- readonly userpublickeys_from_bytes: (
477
- a: number,
478
- b: number
479
- ) => [number, number, number];
480
- readonly __wbg_usersecretkeys_free: (a: number, b: number) => void;
481
- readonly usersecretkeys_to_bytes: (
482
- a: number
483
- ) => [number, number, number, number];
484
- readonly usersecretkeys_from_bytes: (
480
+ f: number
481
+ ) => [number, number];
482
+ readonly aead_encrypt: (
485
483
  a: number,
486
- b: number
487
- ) => [number, number, number];
488
- readonly usersecretkeys_dsa_signing_key: (a: number) => [number, number];
489
- readonly usersecretkeys_kem_secret_key: (a: number) => [number, number];
490
- readonly usersecretkeys_massa_secret_key: (a: number) => [number, number];
491
- readonly __wbg_userkeys_free: (a: number, b: number) => void;
492
- readonly userkeys_public_keys: (a: number) => [number, number, number];
493
- readonly userkeys_secret_keys: (a: number) => [number, number, number];
494
- readonly generate_user_keys: (
484
+ b: number,
485
+ c: number,
486
+ d: number,
487
+ e: number,
488
+ f: number
489
+ ) => [number, number];
490
+ readonly announcementresult_announcer_public_keys: (a: number) => number;
491
+ readonly announcementresult_timestamp: (a: number) => number;
492
+ readonly announcementresult_user_data: (a: number) => [number, number];
493
+ readonly encryptionkey_from_bytes: (
495
494
  a: number,
496
495
  b: number
497
496
  ) => [number, number, number];
498
- readonly __wbg_encryptionkey_free: (a: number, b: number) => void;
499
- readonly encryptionkey_generate: () => number;
500
497
  readonly encryptionkey_from_seed: (
501
498
  a: number,
502
499
  b: number,
503
500
  c: number,
504
501
  d: number
505
502
  ) => [number, number, number];
506
- readonly encryptionkey_from_bytes: (
503
+ readonly encryptionkey_generate: () => number;
504
+ readonly encryptionkey_to_bytes: (a: number) => [number, number];
505
+ readonly generate_user_keys: (
507
506
  a: number,
508
507
  b: number
509
508
  ) => [number, number, number];
510
- readonly encryptionkey_to_bytes: (a: number) => [number, number];
511
- readonly __wbg_nonce_free: (a: number, b: number) => void;
512
- readonly nonce_generate: () => number;
513
509
  readonly nonce_from_bytes: (a: number, b: number) => [number, number, number];
510
+ readonly nonce_generate: () => number;
514
511
  readonly nonce_to_bytes: (a: number) => [number, number];
515
- readonly aead_encrypt: (
516
- a: number,
517
- b: number,
518
- c: number,
519
- d: number,
520
- e: number,
521
- f: number
522
- ) => [number, number];
523
- readonly aead_decrypt: (
524
- a: number,
525
- b: number,
526
- c: number,
527
- d: number,
528
- e: number,
529
- f: number
530
- ) => [number, number];
531
- readonly __wbg_sendmessageoutput_free: (a: number, b: number) => void;
532
- readonly sendmessageoutput_seeker: (a: number) => [number, number];
533
- readonly sendmessageoutput_data: (a: number) => [number, number];
534
- readonly __wbg_receivemessageoutput_free: (a: number, b: number) => void;
535
- readonly __wbg_announcementresult_free: (a: number, b: number) => void;
536
- readonly announcementresult_announcer_public_keys: (a: number) => number;
537
- readonly announcementresult_timestamp: (a: number) => number;
538
- readonly announcementresult_user_data: (a: number) => [number, number];
512
+ readonly receivemessageoutput_acknowledged_seekers: (a: number) => any;
539
513
  readonly receivemessageoutput_message: (a: number) => [number, number];
540
514
  readonly receivemessageoutput_timestamp: (a: number) => number;
541
- readonly receivemessageoutput_acknowledged_seekers: (a: number) => any;
542
515
  readonly receivemessageoutput_user_id: (a: number) => [number, number];
543
- readonly __wbg_sessionmanagerwrapper_free: (a: number, b: number) => void;
544
- readonly sessionmanagerwrapper_new: (a: number) => number;
545
- readonly sessionmanagerwrapper_from_encrypted_blob: (
516
+ readonly sendmessageoutput_data: (a: number) => [number, number];
517
+ readonly sendmessageoutput_seeker: (a: number) => [number, number];
518
+ readonly sessionconfig_new: (
546
519
  a: number,
547
520
  b: number,
548
- c: number
549
- ) => [number, number, number];
550
- readonly sessionmanagerwrapper_to_encrypted_blob: (
551
- a: number,
552
- b: number
553
- ) => [number, number, number, number];
521
+ c: number,
522
+ d: number,
523
+ e: number,
524
+ f: number,
525
+ g: bigint,
526
+ h: bigint
527
+ ) => number;
528
+ readonly sessionconfig_new_default: () => number;
554
529
  readonly sessionmanagerwrapper_establish_outgoing_session: (
555
530
  a: number,
556
531
  b: number,
@@ -566,16 +541,6 @@ export interface InitOutput {
566
541
  d: number,
567
542
  e: number
568
543
  ) => number;
569
- readonly sessionmanagerwrapper_get_message_board_read_keys: (
570
- a: number
571
- ) => any;
572
- readonly sessionmanagerwrapper_send_message: (
573
- a: number,
574
- b: number,
575
- c: number,
576
- d: number,
577
- e: number
578
- ) => [number, number, number];
579
544
  readonly sessionmanagerwrapper_feed_incoming_message_board_read: (
580
545
  a: number,
581
546
  b: number,
@@ -584,18 +549,62 @@ export interface InitOutput {
584
549
  e: number,
585
550
  f: number
586
551
  ) => number;
587
- readonly sessionmanagerwrapper_peer_list: (a: number) => any;
588
- readonly sessionmanagerwrapper_peer_session_status: (
552
+ readonly sessionmanagerwrapper_from_encrypted_blob: (
589
553
  a: number,
590
554
  b: number,
591
555
  c: number
592
556
  ) => [number, number, number];
557
+ readonly sessionmanagerwrapper_get_message_board_read_keys: (
558
+ a: number
559
+ ) => any;
560
+ readonly sessionmanagerwrapper_new: (a: number) => number;
593
561
  readonly sessionmanagerwrapper_peer_discard: (
594
562
  a: number,
595
563
  b: number,
596
564
  c: number
597
565
  ) => [number, number];
566
+ readonly sessionmanagerwrapper_peer_list: (a: number) => any;
567
+ readonly sessionmanagerwrapper_peer_session_status: (
568
+ a: number,
569
+ b: number,
570
+ c: number
571
+ ) => [number, number, number];
598
572
  readonly sessionmanagerwrapper_refresh: (a: number) => any;
573
+ readonly sessionmanagerwrapper_send_message: (
574
+ a: number,
575
+ b: number,
576
+ c: number,
577
+ d: number,
578
+ e: number
579
+ ) => [number, number, number];
580
+ readonly sessionmanagerwrapper_to_encrypted_blob: (
581
+ a: number,
582
+ b: number
583
+ ) => [number, number, number, number];
584
+ readonly userkeys_evm_address: (a: number) => [number, number];
585
+ readonly userkeys_public_keys: (a: number) => [number, number, number];
586
+ readonly userkeys_secret_keys: (a: number) => [number, number, number];
587
+ readonly userpublickeys_derive_id: (a: number) => [number, number];
588
+ readonly userpublickeys_dsa_verification_key: (a: number) => [number, number];
589
+ readonly userpublickeys_from_bytes: (
590
+ a: number,
591
+ b: number
592
+ ) => [number, number, number];
593
+ readonly userpublickeys_kem_public_key: (a: number) => [number, number];
594
+ readonly userpublickeys_massa_public_key: (a: number) => [number, number];
595
+ readonly userpublickeys_to_bytes: (
596
+ a: number
597
+ ) => [number, number, number, number];
598
+ readonly usersecretkeys_dsa_signing_key: (a: number) => [number, number];
599
+ readonly usersecretkeys_from_bytes: (
600
+ a: number,
601
+ b: number
602
+ ) => [number, number, number];
603
+ readonly usersecretkeys_kem_secret_key: (a: number) => [number, number];
604
+ readonly usersecretkeys_massa_secret_key: (a: number) => [number, number];
605
+ readonly usersecretkeys_to_bytes: (
606
+ a: number
607
+ ) => [number, number, number, number];
599
608
  readonly start: () => void;
600
609
  readonly __wbindgen_exn_store: (a: number) => void;
601
610
  readonly __externref_table_alloc: () => number;