@libp2p/interop 14.0.15 → 14.0.16

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,5 +1,6 @@
1
- import { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime'
2
- import type { Codec } from 'protons-runtime'
1
+ import { decodeMessage, encodeMessage, enumeration, MaxLengthError, message, streamMessage } from 'protons-runtime'
2
+ import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc'
3
+ import type { Codec, DecodeOptions } from 'protons-runtime'
3
4
  import type { Uint8ArrayList } from 'uint8arraylist'
4
5
 
5
6
  export interface HopMessage {
@@ -66,7 +67,7 @@ export namespace HopMessage {
66
67
  if (opts.lengthDelimited !== false) {
67
68
  w.ldelim()
68
69
  }
69
- }, (reader, length) => {
70
+ }, (reader, length, opts = {}) => {
70
71
  const obj: any = {}
71
72
 
72
73
  const end = length == null ? reader.len : reader.pos + length
@@ -75,40 +76,151 @@ export namespace HopMessage {
75
76
  const tag = reader.uint32()
76
77
 
77
78
  switch (tag >>> 3) {
78
- case 1:
79
+ case 1: {
79
80
  obj.type = HopMessage.Type.codec().decode(reader)
80
81
  break
81
- case 2:
82
- obj.peer = Peer.codec().decode(reader, reader.uint32())
82
+ }
83
+ case 2: {
84
+ obj.peer = Peer.codec().decode(reader, reader.uint32(), {
85
+ limits: opts.limits?.peer
86
+ })
83
87
  break
84
- case 3:
85
- obj.reservation = Reservation.codec().decode(reader, reader.uint32())
88
+ }
89
+ case 3: {
90
+ obj.reservation = Reservation.codec().decode(reader, reader.uint32(), {
91
+ limits: opts.limits?.reservation
92
+ })
86
93
  break
87
- case 4:
88
- obj.limit = Limit.codec().decode(reader, reader.uint32())
94
+ }
95
+ case 4: {
96
+ obj.limit = Limit.codec().decode(reader, reader.uint32(), {
97
+ limits: opts.limits?.limit
98
+ })
89
99
  break
90
- case 5:
100
+ }
101
+ case 5: {
91
102
  obj.status = Status.codec().decode(reader)
92
103
  break
93
- default:
104
+ }
105
+ default: {
94
106
  reader.skipType(tag & 7)
95
107
  break
108
+ }
96
109
  }
97
110
  }
98
111
 
99
112
  return obj
113
+ }, function * (reader, length, prefix, opts = {}) {
114
+ const end = length == null ? reader.len : reader.pos + length
115
+
116
+ while (reader.pos < end) {
117
+ const tag = reader.uint32()
118
+
119
+ switch (tag >>> 3) {
120
+ case 1: {
121
+ yield {
122
+ field: `${prefix}.type`,
123
+ value: HopMessage.Type.codec().decode(reader)
124
+ }
125
+ break
126
+ }
127
+ case 2: {
128
+ yield * Peer.codec().stream(reader, reader.uint32(), `${prefix}.peer`, {
129
+ limits: opts.limits?.peer
130
+ })
131
+
132
+ break
133
+ }
134
+ case 3: {
135
+ yield * Reservation.codec().stream(reader, reader.uint32(), `${prefix}.reservation`, {
136
+ limits: opts.limits?.reservation
137
+ })
138
+
139
+ break
140
+ }
141
+ case 4: {
142
+ yield * Limit.codec().stream(reader, reader.uint32(), `${prefix}.limit`, {
143
+ limits: opts.limits?.limit
144
+ })
145
+
146
+ break
147
+ }
148
+ case 5: {
149
+ yield {
150
+ field: `${prefix}.status`,
151
+ value: Status.codec().decode(reader)
152
+ }
153
+ break
154
+ }
155
+ default: {
156
+ reader.skipType(tag & 7)
157
+ break
158
+ }
159
+ }
160
+ }
100
161
  })
101
162
  }
102
163
 
103
164
  return _codec
104
165
  }
105
166
 
106
- export const encode = (obj: Partial<HopMessage>): Uint8Array => {
167
+ export interface HopMessageTypeFieldEvent {
168
+ field: '$.type'
169
+ value: HopMessage.Type
170
+ }
171
+
172
+ export interface HopMessagePeerIdFieldEvent {
173
+ field: '$.peer.id'
174
+ value: Uint8Array
175
+ }
176
+
177
+ export interface HopMessagePeerAddrsFieldEvent {
178
+ field: '$.peer.addrs[]'
179
+ index: number
180
+ value: Uint8Array
181
+ }
182
+
183
+ export interface HopMessageReservationExpireFieldEvent {
184
+ field: '$.reservation.expire'
185
+ value: bigint
186
+ }
187
+
188
+ export interface HopMessageReservationAddrsFieldEvent {
189
+ field: '$.reservation.addrs[]'
190
+ index: number
191
+ value: Uint8Array
192
+ }
193
+
194
+ export interface HopMessageReservationVoucherFieldEvent {
195
+ field: '$.reservation.voucher'
196
+ value: Uint8Array
197
+ }
198
+
199
+ export interface HopMessageLimitDurationFieldEvent {
200
+ field: '$.limit.duration'
201
+ value: number
202
+ }
203
+
204
+ export interface HopMessageLimitDataFieldEvent {
205
+ field: '$.limit.data'
206
+ value: bigint
207
+ }
208
+
209
+ export interface HopMessageStatusFieldEvent {
210
+ field: '$.status'
211
+ value: Status
212
+ }
213
+
214
+ export function encode (obj: Partial<HopMessage>): Uint8Array {
107
215
  return encodeMessage(obj, HopMessage.codec())
108
216
  }
109
217
 
110
- export const decode = (buf: Uint8Array | Uint8ArrayList): HopMessage => {
111
- return decodeMessage(buf, HopMessage.codec())
218
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<HopMessage>): HopMessage {
219
+ return decodeMessage(buf, HopMessage.codec(), opts)
220
+ }
221
+
222
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<HopMessage>): Generator<HopMessageTypeFieldEvent | HopMessagePeerIdFieldEvent | HopMessagePeerAddrsFieldEvent | HopMessageReservationExpireFieldEvent | HopMessageReservationAddrsFieldEvent | HopMessageReservationVoucherFieldEvent | HopMessageLimitDurationFieldEvent | HopMessageLimitDataFieldEvent | HopMessageStatusFieldEvent> {
223
+ return streamMessage(buf, HopMessage.codec(), opts)
112
224
  }
113
225
  }
114
226
 
@@ -168,7 +280,7 @@ export namespace StopMessage {
168
280
  if (opts.lengthDelimited !== false) {
169
281
  w.ldelim()
170
282
  }
171
- }, (reader, length) => {
283
+ }, (reader, length, opts = {}) => {
172
284
  const obj: any = {}
173
285
 
174
286
  const end = length == null ? reader.len : reader.pos + length
@@ -177,37 +289,122 @@ export namespace StopMessage {
177
289
  const tag = reader.uint32()
178
290
 
179
291
  switch (tag >>> 3) {
180
- case 1:
292
+ case 1: {
181
293
  obj.type = StopMessage.Type.codec().decode(reader)
182
294
  break
183
- case 2:
184
- obj.peer = Peer.codec().decode(reader, reader.uint32())
295
+ }
296
+ case 2: {
297
+ obj.peer = Peer.codec().decode(reader, reader.uint32(), {
298
+ limits: opts.limits?.peer
299
+ })
185
300
  break
186
- case 3:
187
- obj.limit = Limit.codec().decode(reader, reader.uint32())
301
+ }
302
+ case 3: {
303
+ obj.limit = Limit.codec().decode(reader, reader.uint32(), {
304
+ limits: opts.limits?.limit
305
+ })
188
306
  break
189
- case 4:
307
+ }
308
+ case 4: {
190
309
  obj.status = Status.codec().decode(reader)
191
310
  break
192
- default:
311
+ }
312
+ default: {
193
313
  reader.skipType(tag & 7)
194
314
  break
315
+ }
195
316
  }
196
317
  }
197
318
 
198
319
  return obj
320
+ }, function * (reader, length, prefix, opts = {}) {
321
+ const end = length == null ? reader.len : reader.pos + length
322
+
323
+ while (reader.pos < end) {
324
+ const tag = reader.uint32()
325
+
326
+ switch (tag >>> 3) {
327
+ case 1: {
328
+ yield {
329
+ field: `${prefix}.type`,
330
+ value: StopMessage.Type.codec().decode(reader)
331
+ }
332
+ break
333
+ }
334
+ case 2: {
335
+ yield * Peer.codec().stream(reader, reader.uint32(), `${prefix}.peer`, {
336
+ limits: opts.limits?.peer
337
+ })
338
+
339
+ break
340
+ }
341
+ case 3: {
342
+ yield * Limit.codec().stream(reader, reader.uint32(), `${prefix}.limit`, {
343
+ limits: opts.limits?.limit
344
+ })
345
+
346
+ break
347
+ }
348
+ case 4: {
349
+ yield {
350
+ field: `${prefix}.status`,
351
+ value: Status.codec().decode(reader)
352
+ }
353
+ break
354
+ }
355
+ default: {
356
+ reader.skipType(tag & 7)
357
+ break
358
+ }
359
+ }
360
+ }
199
361
  })
200
362
  }
201
363
 
202
364
  return _codec
203
365
  }
204
366
 
205
- export const encode = (obj: Partial<StopMessage>): Uint8Array => {
367
+ export interface StopMessageTypeFieldEvent {
368
+ field: '$.type'
369
+ value: StopMessage.Type
370
+ }
371
+
372
+ export interface StopMessagePeerIdFieldEvent {
373
+ field: '$.peer.id'
374
+ value: Uint8Array
375
+ }
376
+
377
+ export interface StopMessagePeerAddrsFieldEvent {
378
+ field: '$.peer.addrs[]'
379
+ index: number
380
+ value: Uint8Array
381
+ }
382
+
383
+ export interface StopMessageLimitDurationFieldEvent {
384
+ field: '$.limit.duration'
385
+ value: number
386
+ }
387
+
388
+ export interface StopMessageLimitDataFieldEvent {
389
+ field: '$.limit.data'
390
+ value: bigint
391
+ }
392
+
393
+ export interface StopMessageStatusFieldEvent {
394
+ field: '$.status'
395
+ value: Status
396
+ }
397
+
398
+ export function encode (obj: Partial<StopMessage>): Uint8Array {
206
399
  return encodeMessage(obj, StopMessage.codec())
207
400
  }
208
401
 
209
- export const decode = (buf: Uint8Array | Uint8ArrayList): StopMessage => {
210
- return decodeMessage(buf, StopMessage.codec())
402
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<StopMessage>): StopMessage {
403
+ return decodeMessage(buf, StopMessage.codec(), opts)
404
+ }
405
+
406
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<StopMessage>): Generator<StopMessageTypeFieldEvent | StopMessagePeerIdFieldEvent | StopMessagePeerAddrsFieldEvent | StopMessageLimitDurationFieldEvent | StopMessageLimitDataFieldEvent | StopMessageStatusFieldEvent> {
407
+ return streamMessage(buf, StopMessage.codec(), opts)
211
408
  }
212
409
  }
213
410
 
@@ -231,7 +428,7 @@ export namespace Peer {
231
428
  w.bytes(obj.id)
232
429
  }
233
430
 
234
- if (obj.addrs != null) {
431
+ if (obj.addrs != null && obj.addrs.length > 0) {
235
432
  for (const value of obj.addrs) {
236
433
  w.uint32(18)
237
434
  w.bytes(value)
@@ -241,9 +438,9 @@ export namespace Peer {
241
438
  if (opts.lengthDelimited !== false) {
242
439
  w.ldelim()
243
440
  }
244
- }, (reader, length) => {
441
+ }, (reader, length, opts = {}) => {
245
442
  const obj: any = {
246
- id: new Uint8Array(0),
443
+ id: uint8ArrayAlloc(0),
247
444
  addrs: []
248
445
  }
249
446
 
@@ -253,31 +450,92 @@ export namespace Peer {
253
450
  const tag = reader.uint32()
254
451
 
255
452
  switch (tag >>> 3) {
256
- case 1:
453
+ case 1: {
257
454
  obj.id = reader.bytes()
258
455
  break
259
- case 2:
456
+ }
457
+ case 2: {
458
+ if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {
459
+ throw new MaxLengthError('Decode error - repeated field "addrs" had too many elements')
460
+ }
461
+
260
462
  obj.addrs.push(reader.bytes())
261
463
  break
262
- default:
464
+ }
465
+ default: {
263
466
  reader.skipType(tag & 7)
264
467
  break
468
+ }
265
469
  }
266
470
  }
267
471
 
268
472
  return obj
473
+ }, function * (reader, length, prefix, opts = {}) {
474
+ const obj = {
475
+ addrs: 0
476
+ }
477
+
478
+ const end = length == null ? reader.len : reader.pos + length
479
+
480
+ while (reader.pos < end) {
481
+ const tag = reader.uint32()
482
+
483
+ switch (tag >>> 3) {
484
+ case 1: {
485
+ yield {
486
+ field: `${prefix}.id`,
487
+ value: reader.bytes()
488
+ }
489
+ break
490
+ }
491
+ case 2: {
492
+ if (opts.limits?.addrs != null && obj.addrs === opts.limits.addrs) {
493
+ throw new MaxLengthError('Streaming decode error - repeated field "addrs" had too many elements')
494
+ }
495
+
496
+ yield {
497
+ field: `${prefix}.addrs[]`,
498
+ index: obj.addrs,
499
+ value: reader.bytes()
500
+ }
501
+
502
+ obj.addrs++
503
+
504
+ break
505
+ }
506
+ default: {
507
+ reader.skipType(tag & 7)
508
+ break
509
+ }
510
+ }
511
+ }
269
512
  })
270
513
  }
271
514
 
272
515
  return _codec
273
516
  }
274
517
 
275
- export const encode = (obj: Partial<Peer>): Uint8Array => {
518
+ export interface PeerIdFieldEvent {
519
+ field: '$.id'
520
+ value: Uint8Array
521
+ }
522
+
523
+ export interface PeerAddrsFieldEvent {
524
+ field: '$.addrs[]'
525
+ index: number
526
+ value: Uint8Array
527
+ }
528
+
529
+ export function encode (obj: Partial<Peer>): Uint8Array {
276
530
  return encodeMessage(obj, Peer.codec())
277
531
  }
278
532
 
279
- export const decode = (buf: Uint8Array | Uint8ArrayList): Peer => {
280
- return decodeMessage(buf, Peer.codec())
533
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Peer>): Peer {
534
+ return decodeMessage(buf, Peer.codec(), opts)
535
+ }
536
+
537
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Peer>): Generator<PeerIdFieldEvent | PeerAddrsFieldEvent> {
538
+ return streamMessage(buf, Peer.codec(), opts)
281
539
  }
282
540
  }
283
541
 
@@ -302,7 +560,7 @@ export namespace Reservation {
302
560
  w.uint64(obj.expire)
303
561
  }
304
562
 
305
- if (obj.addrs != null) {
563
+ if (obj.addrs != null && obj.addrs.length > 0) {
306
564
  for (const value of obj.addrs) {
307
565
  w.uint32(18)
308
566
  w.bytes(value)
@@ -317,7 +575,7 @@ export namespace Reservation {
317
575
  if (opts.lengthDelimited !== false) {
318
576
  w.ldelim()
319
577
  }
320
- }, (reader, length) => {
578
+ }, (reader, length, opts = {}) => {
321
579
  const obj: any = {
322
580
  expire: 0n,
323
581
  addrs: []
@@ -329,34 +587,108 @@ export namespace Reservation {
329
587
  const tag = reader.uint32()
330
588
 
331
589
  switch (tag >>> 3) {
332
- case 1:
590
+ case 1: {
333
591
  obj.expire = reader.uint64()
334
592
  break
335
- case 2:
593
+ }
594
+ case 2: {
595
+ if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {
596
+ throw new MaxLengthError('Decode error - repeated field "addrs" had too many elements')
597
+ }
598
+
336
599
  obj.addrs.push(reader.bytes())
337
600
  break
338
- case 3:
601
+ }
602
+ case 3: {
339
603
  obj.voucher = reader.bytes()
340
604
  break
341
- default:
605
+ }
606
+ default: {
342
607
  reader.skipType(tag & 7)
343
608
  break
609
+ }
344
610
  }
345
611
  }
346
612
 
347
613
  return obj
614
+ }, function * (reader, length, prefix, opts = {}) {
615
+ const obj = {
616
+ addrs: 0
617
+ }
618
+
619
+ const end = length == null ? reader.len : reader.pos + length
620
+
621
+ while (reader.pos < end) {
622
+ const tag = reader.uint32()
623
+
624
+ switch (tag >>> 3) {
625
+ case 1: {
626
+ yield {
627
+ field: `${prefix}.expire`,
628
+ value: reader.uint64()
629
+ }
630
+ break
631
+ }
632
+ case 2: {
633
+ if (opts.limits?.addrs != null && obj.addrs === opts.limits.addrs) {
634
+ throw new MaxLengthError('Streaming decode error - repeated field "addrs" had too many elements')
635
+ }
636
+
637
+ yield {
638
+ field: `${prefix}.addrs[]`,
639
+ index: obj.addrs,
640
+ value: reader.bytes()
641
+ }
642
+
643
+ obj.addrs++
644
+
645
+ break
646
+ }
647
+ case 3: {
648
+ yield {
649
+ field: `${prefix}.voucher`,
650
+ value: reader.bytes()
651
+ }
652
+ break
653
+ }
654
+ default: {
655
+ reader.skipType(tag & 7)
656
+ break
657
+ }
658
+ }
659
+ }
348
660
  })
349
661
  }
350
662
 
351
663
  return _codec
352
664
  }
353
665
 
354
- export const encode = (obj: Partial<Reservation>): Uint8Array => {
666
+ export interface ReservationExpireFieldEvent {
667
+ field: '$.expire'
668
+ value: bigint
669
+ }
670
+
671
+ export interface ReservationAddrsFieldEvent {
672
+ field: '$.addrs[]'
673
+ index: number
674
+ value: Uint8Array
675
+ }
676
+
677
+ export interface ReservationVoucherFieldEvent {
678
+ field: '$.voucher'
679
+ value: Uint8Array
680
+ }
681
+
682
+ export function encode (obj: Partial<Reservation>): Uint8Array {
355
683
  return encodeMessage(obj, Reservation.codec())
356
684
  }
357
685
 
358
- export const decode = (buf: Uint8Array | Uint8ArrayList): Reservation => {
359
- return decodeMessage(buf, Reservation.codec())
686
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Reservation>): Reservation {
687
+ return decodeMessage(buf, Reservation.codec(), opts)
688
+ }
689
+
690
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Reservation>): Generator<ReservationExpireFieldEvent | ReservationAddrsFieldEvent | ReservationVoucherFieldEvent> {
691
+ return streamMessage(buf, Reservation.codec(), opts)
360
692
  }
361
693
  }
362
694
 
@@ -388,7 +720,7 @@ export namespace Limit {
388
720
  if (opts.lengthDelimited !== false) {
389
721
  w.ldelim()
390
722
  }
391
- }, (reader, length) => {
723
+ }, (reader, length, opts = {}) => {
392
724
  const obj: any = {}
393
725
 
394
726
  const end = length == null ? reader.len : reader.pos + length
@@ -397,31 +729,75 @@ export namespace Limit {
397
729
  const tag = reader.uint32()
398
730
 
399
731
  switch (tag >>> 3) {
400
- case 1:
732
+ case 1: {
401
733
  obj.duration = reader.uint32()
402
734
  break
403
- case 2:
735
+ }
736
+ case 2: {
404
737
  obj.data = reader.uint64()
405
738
  break
406
- default:
739
+ }
740
+ default: {
407
741
  reader.skipType(tag & 7)
408
742
  break
743
+ }
409
744
  }
410
745
  }
411
746
 
412
747
  return obj
748
+ }, function * (reader, length, prefix, opts = {}) {
749
+ const end = length == null ? reader.len : reader.pos + length
750
+
751
+ while (reader.pos < end) {
752
+ const tag = reader.uint32()
753
+
754
+ switch (tag >>> 3) {
755
+ case 1: {
756
+ yield {
757
+ field: `${prefix}.duration`,
758
+ value: reader.uint32()
759
+ }
760
+ break
761
+ }
762
+ case 2: {
763
+ yield {
764
+ field: `${prefix}.data`,
765
+ value: reader.uint64()
766
+ }
767
+ break
768
+ }
769
+ default: {
770
+ reader.skipType(tag & 7)
771
+ break
772
+ }
773
+ }
774
+ }
413
775
  })
414
776
  }
415
777
 
416
778
  return _codec
417
779
  }
418
780
 
419
- export const encode = (obj: Partial<Limit>): Uint8Array => {
781
+ export interface LimitDurationFieldEvent {
782
+ field: '$.duration'
783
+ value: number
784
+ }
785
+
786
+ export interface LimitDataFieldEvent {
787
+ field: '$.data'
788
+ value: bigint
789
+ }
790
+
791
+ export function encode (obj: Partial<Limit>): Uint8Array {
420
792
  return encodeMessage(obj, Limit.codec())
421
793
  }
422
794
 
423
- export const decode = (buf: Uint8Array | Uint8ArrayList): Limit => {
424
- return decodeMessage(buf, Limit.codec())
795
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Limit>): Limit {
796
+ return decodeMessage(buf, Limit.codec(), opts)
797
+ }
798
+
799
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Limit>): Generator<LimitDurationFieldEvent | LimitDataFieldEvent> {
800
+ return streamMessage(buf, Limit.codec(), opts)
425
801
  }
426
802
  }
427
803
 
@@ -454,6 +830,7 @@ export namespace Status {
454
830
  return enumeration<Status>(__StatusValues)
455
831
  }
456
832
  }
833
+
457
834
  export interface ReservationVoucher {
458
835
  relay: Uint8Array
459
836
  peer: Uint8Array
@@ -488,10 +865,10 @@ export namespace ReservationVoucher {
488
865
  if (opts.lengthDelimited !== false) {
489
866
  w.ldelim()
490
867
  }
491
- }, (reader, length) => {
868
+ }, (reader, length, opts = {}) => {
492
869
  const obj: any = {
493
- relay: new Uint8Array(0),
494
- peer: new Uint8Array(0),
870
+ relay: uint8ArrayAlloc(0),
871
+ peer: uint8ArrayAlloc(0),
495
872
  expiration: 0n
496
873
  }
497
874
 
@@ -501,33 +878,90 @@ export namespace ReservationVoucher {
501
878
  const tag = reader.uint32()
502
879
 
503
880
  switch (tag >>> 3) {
504
- case 1:
881
+ case 1: {
505
882
  obj.relay = reader.bytes()
506
883
  break
507
- case 2:
884
+ }
885
+ case 2: {
508
886
  obj.peer = reader.bytes()
509
887
  break
510
- case 3:
888
+ }
889
+ case 3: {
511
890
  obj.expiration = reader.uint64()
512
891
  break
513
- default:
892
+ }
893
+ default: {
514
894
  reader.skipType(tag & 7)
515
895
  break
896
+ }
516
897
  }
517
898
  }
518
899
 
519
900
  return obj
901
+ }, function * (reader, length, prefix, opts = {}) {
902
+ const end = length == null ? reader.len : reader.pos + length
903
+
904
+ while (reader.pos < end) {
905
+ const tag = reader.uint32()
906
+
907
+ switch (tag >>> 3) {
908
+ case 1: {
909
+ yield {
910
+ field: `${prefix}.relay`,
911
+ value: reader.bytes()
912
+ }
913
+ break
914
+ }
915
+ case 2: {
916
+ yield {
917
+ field: `${prefix}.peer`,
918
+ value: reader.bytes()
919
+ }
920
+ break
921
+ }
922
+ case 3: {
923
+ yield {
924
+ field: `${prefix}.expiration`,
925
+ value: reader.uint64()
926
+ }
927
+ break
928
+ }
929
+ default: {
930
+ reader.skipType(tag & 7)
931
+ break
932
+ }
933
+ }
934
+ }
520
935
  })
521
936
  }
522
937
 
523
938
  return _codec
524
939
  }
525
940
 
526
- export const encode = (obj: Partial<ReservationVoucher>): Uint8Array => {
941
+ export interface ReservationVoucherRelayFieldEvent {
942
+ field: '$.relay'
943
+ value: Uint8Array
944
+ }
945
+
946
+ export interface ReservationVoucherPeerFieldEvent {
947
+ field: '$.peer'
948
+ value: Uint8Array
949
+ }
950
+
951
+ export interface ReservationVoucherExpirationFieldEvent {
952
+ field: '$.expiration'
953
+ value: bigint
954
+ }
955
+
956
+ export function encode (obj: Partial<ReservationVoucher>): Uint8Array {
527
957
  return encodeMessage(obj, ReservationVoucher.codec())
528
958
  }
529
959
 
530
- export const decode = (buf: Uint8Array | Uint8ArrayList): ReservationVoucher => {
531
- return decodeMessage(buf, ReservationVoucher.codec())
960
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ReservationVoucher>): ReservationVoucher {
961
+ return decodeMessage(buf, ReservationVoucher.codec(), opts)
962
+ }
963
+
964
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ReservationVoucher>): Generator<ReservationVoucherRelayFieldEvent | ReservationVoucherPeerFieldEvent | ReservationVoucherExpirationFieldEvent> {
965
+ return streamMessage(buf, ReservationVoucher.codec(), opts)
532
966
  }
533
967
  }